Stop 02 · HTML5Projects · 4/4

Blog Page

Part of the Frontend Developer Roadmap

In short

A blog page is mostly text, which makes it the perfect place to get headings, articles, images and dates exactly right. Good structure here helps a lot with SEO later.

A static blog post layout with a title, byline, article body and related posts — practice for semantic `<article>`, headings, and long-form content styling. A good blog layout also needs readable typography, metadata, accessible navigation, responsive media, and a content structure that remains understandable when CSS is removed.

The jaadu mascot relaxes in an armchair reading a big newspaper with a cup of chai nearby.

Think of it like this

The Sunday newspaper

A newspaper has a masthead on top, headlines, bylines with dates, photos with captions, and side columns for ads and weather. A blog page uses the same pattern, just with HTML tags instead of print columns.

Watch it happen

A blog page, newspaper style

<body>
site <header>
<main>
<article>
post <header>
<figure>
<blockquote>
<aside>

1/4The site header is the masthead: logo and nav, same on every page.

The big ideas

What you need to know

Article with a header

Each post is an <article> with its own <header> holding the title, author and <time>.

Figures with captions

Wrap images in <figure> and add <figcaption>, just like photo captions in a newspaper.

Quotes and code

<blockquote> for quotes, <code> for inline code and <pre><code> for code blocks.

Sidebar is an aside

Related posts and an author bio go in <aside>, outside the main article.

How it works

Build plan

  1. 1

    Write a real post

    Pick a topic you know, like your first hackathon, and write 400 words.

  2. 2

    Page skeleton

    Header with nav, main with the article, aside for related posts, footer.

  3. 3

    Mark up the post

    Headings in order, paragraphs, a figure with caption, a quote.

  4. 4

    Readable typography

    Keep lines around 60 to 75 characters wide and the font size comfortable.

See it in code

Walk through the code

html
1<article>2  <header>3    <h1>What I Learnt at My First Hackathon</h1>4    <p>By Sneha · <time datetime="2026-02-14">14 Feb 2026</time> · 5 min read</p>5  </header>6 7  <p>We had 24 hours, three people and zero sleep...</p>8 9  <figure>10    <img src="team.webp" alt="Our team of three at the demo table" />11    <figcaption>Demo time, running on chai and hope.</figcaption>12  </figure>13 14  <blockquote>Ship something small that works.</blockquote>15</article>

1/4The post's header holds the h1, author and a time tag with a machine-readable date.

The post's own <header> sits inside <article>, separate from the site's main <header>. A page can have both.

Save yourself the pain

Common mistakes

Oops

Using <br> tags to create paragraphs.

Do this instead

Each paragraph is its own <p>. Spacing is CSS's job.

Oops

Making the text span the full width of a big monitor.

Do this instead

Limit the content width (around 65ch) so lines stay easy to read.

Your mission

Publish one real post

~40 min

Quick check

Where should a blog post's author name and publish date go?

Go deeper

  1. 1Use `<article>`, `<time>` and proper heading hierarchy for the post. Verify the behavior with realistic data and handle the failure or empty state as well.
  2. 2Practice comfortable reading-width typography (line-length, line-height). Test it with at least one normal case and one edge case so you can explain the behavior confidently.
  3. 3Add a simple 'related posts' section using semantic list markup.

More projects at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge