Full-Stack course / Tools and the web
A semantic page skeleton
How to fetch and submit this exercise
Once: install the tool and connect your account.
curl -fsSL https://gonomicon.com/install.sh | sh
gonomicon loginEach exercise: download it, edit the file named in the instructions, then submit.
gonomicon fetch fs-week-1/07-01-semantic-page-skeleton
cd 07-01-semantic-page-skeleton
gonomicon submitGoal
Build index.html for your personal site using real landmark elements — <header>, <nav>, <main>, <section>, <footer> — instead of generic <div>s, with no CSS yet.
Example
A one-page bakery site (not what you're building, just the shape to copy) uses one of each landmark, with the nav inside the header and two labeled sections inside main:
<header>
<h1>Corner Bakery</h1>
<nav>
<a href="#menu">Menu</a>
<a href="#hours">Hours</a>
</nav>
</header>
<main>
<section id="menu">
<h2>Today's menu</h2>
<p>Sourdough, cinnamon rolls, and a rotating soup.</p>
</section>
<section id="hours">
<h2>Hours</h2>
<p>Tuesday through Sunday, 7am to 2pm.</p>
</section>
</main>
<footer>
<p>© 2026 Corner Bakery.</p>
</footer>
Rules
- Exactly one
<header>, containing exactly one<h1>(your name or the site's title) and one<nav>with at least two links. - Exactly one
<main>, containing at least two<section>elements — pick your own topics (About and Projects are a natural fit, but any two real sections work). - Every
<section>needs its own heading (an<h2>is the natural choice) as its first piece of content — a section with no heading has no name a screen reader can announce. - Exactly one
<footer>. - The whole page has exactly one
<h1>total — don't repeat it inside a section. - No
<div>standing in for any of these five elements. A<div>is fine for a purely visual wrapper that isn't one of these landmarks, but don't use one in place of<header>,<nav>,<main>, a<section>, or<footer>.
What you'll practice
Structuring a real page out of landmark elements that announce what each region is for, instead of a pile of anonymous <div>s.
Run it
gonomicon fetch fs-week-1/07-01-semantic-page-skeleton
cd 07-01-semantic-page-skeleton
gonomicon test
gonomicon submit
Hints
- A page should have exactly one <header>, one <main>, and one <footer> — each used once, each used for real. The <nav> with your links goes inside the <header>, not next to it.
- Every <section> needs its own heading as the first thing inside it (an <h2> works well) so it has a name of its own — and the whole page should still only have one <h1>, the one in the header.
- <header><h1>...</h1><nav><a href="#about">About</a><a href="#projects">Projects</a></nav></header><main><section id="about"><h2>About</h2>...</section><section id="projects"><h2>Projects</h2>...</section></main><footer>...</footer> — fill in real content, keep that shape.