MODULE 02 · MINI PROJECT

Building a Static Page

Fourteen days of tags, structure, and semantics come together today. No new syntax — just everything you've learned so far, combined into one real, complete HTML page.

Day 15 of 30 Beginner ~25 min

Why a Mini Project Now

Learning tags one at a time is necessary, but it doesn't show you how they fit together. Today's project is a checkpoint — a chance to build one small, real page using headings, text formatting, links, images, lists, tables, forms, and semantic structure, all in the same document.

What You're Building

A simple one-page profile or small-business site — pick whichever feels more natural to you. It needs a header with navigation, a hero introduction, a content section with a list or table, an image, a contact form, and a footer.

SECTION TAGS TO REACH FOR
Header

<header>, <nav>, <ul>/<li>, <a>

Hero

<section>, <h1>, <p>, <img>

Content

<main>, <article>, <h2>, lists or a <table>

Contact

<form>, <label>, <input>, <textarea>, <button>

Footer

<footer>, <p>, <a>

Sketch the Page Before You Code It

Before opening the editor, map the page as an outline. This is the same shape your finished HTML will follow — semantic sections nested in a logical order, each with one clear job.

PAGE OUTLINE
<header> site nav
<nav> Home · About · Contact
<main>
<section id="hero"> intro heading + image
<section id="about"> paragraph + list or table
<section id="contact"> form
<footer> copyright + links

Header & Navigation

Start from the top of the document. The header holds the site identity and the main navigation, wrapped in semantic tags rather than generic divs.

day15.html
<header>
  <h1>Riya's Bakery</h1>
  <nav>
    <ul>
      <li><a href="#hero">Home</a></li>
      <li><a href="#about">About</a></li>
      <li><a href="#contact">Contact</a></li>
    </ul>
  </nav>
</header>

Introduction, Image & a List

Inside <main>, the hero introduces the page, and the about section backs it up with real content — here, a short list of highlights.

day15.html
<main>
  <section id="hero">
    <h2>Fresh bakes, every morning</h2>
    <p>Small-batch bread and pastries baked daily in Haridwar.</p>
    <img src="bakery.jpg" alt="Fresh loaves cooling on a wooden shelf">
  </section>

  <section id="about">
    <h2>Why people come back</h2>
    <ul>
      <li>Baked fresh before 7am, daily</li>
      <li>No preservatives, ever</li>
      <li>Local wheat, sourced weekly</li>
    </ul>
  </section>
DON'T FORGET

Every <img> needs a meaningful alt attribute — you covered this back on Day 5 and again in Day 13's accessibility lesson. Today's project is where that habit actually has to stick.

A Real, Labeled Form

Close the main content with a form. Every input needs a matching <label> — this is one of the most common mistakes beginners skip, and one of the easiest to get right.

day15.html
<section id="contact">
  <h2>Get in touch</h2>
  <form>
    <label for="name">Name</label>
    <input type="text" id="name" name="name" required>

    <label for="message">Message</label>
    <textarea id="message" name="message"></textarea>

    <button type="submit">Send</button>
  </form>
</section>
</main>

<footer>
  <p>&copy; 2026 Riya's Bakery</p>
</footer>

What It Looks Like, Unstyled

With zero CSS, the page won't look polished — but it should already be readable, navigable, and correctly structured. That's the whole point: good HTML stands on its own before any styling touches it.

STRUCTURE PREVIEW (STYLED HERE ONLY TO SHOW LAYOUT SHAPE)
Riya's Bakery Home · About · Contact
Fresh bakes, every morning

Small-batch bread and pastries baked daily in Haridwar.

Fresh DailyBaked before 7am
No PreservativesEver, in anything
Local WheatSourced weekly

Check the Page, Not Just Write It

SKIP THIS VS DO THIS
SKIP THIS Writing the whole page then never opening it in a browser or checking for unclosed tags.
DO THIS Save often, reload in the browser as you go, and run the page through a validator before calling it done.

Breaking Down What You Just Built

1

Semantic structureheader, nav, main, section, and footer replace generic divs for every major region.

2

Working navigationIn-page links using href="#id" jump straight to matching section IDs.

3

Accessible imagesEvery img carries a meaningful alt describing what it actually shows.

4

Labeled form fieldsEvery input and textarea is paired with a label using matching for/id.

5

Valid, checked HTMLThe page was reloaded and validated along the way, not just written once.

Try It Yourself

EXERCISE

Swap the bakery example for your own idea — a personal portfolio, a study group, a local shop. Keep the same section shape (header, hero, about, contact, footer) but write every line of content yourself.

Build Your Complete Static Page

HANDS-ON EXERCISE

Bringing Module 01 and 02 together

Create day15.html as a full, standalone document — this is the file you'll style starting Day 16.

  1. Set up the full document shell — doctype, html, head with a title, and body.
  2. Build a header with a site name and a nav linking to at least three in-page sections.
  3. Add a hero section with a heading, a paragraph, and one image with proper alt text.
  4. Add a content section with either a list or a table of at least four items.
  5. Add a contact form with at least two labeled inputs and a submit button.
  6. Close with a footer, then open the page in a browser and check every link and tag.

Recap

PLANNING FIRST

Sketching the page as an outline before coding keeps the structure clean and intentional.

SEMANTIC TAGS

header, main, section, and footer give the page meaning that a div never could.

ACCESSIBLE BY DEFAULT

Alt text and form labels aren't extras — they're part of writing the tag correctly.

A REAL FOUNDATION

This page carries forward as the base you'll style starting with Day 16's CSS module.

Key Takeaways

  • A mini project is where scattered tag knowledge turns into one coherent, working page.
  • Semantic elements — header, nav, main, section, footer — describe the page's structure, not just its appearance.
  • In-page navigation links pair an href="#id" with a matching id attribute on the target section.
  • Every image needs alt text, and every form input needs a properly linked label — no exceptions.
  • Reload and validate as you build, rather than writing the whole page before checking it once.
Course Overview