Skip to content
Dev1 min read

Building This Blog

-

Why Astro

Astro generates static HTML by default. No JavaScript ships to the client unless you explicitly opt in. For a content-focused site like a blog, this means near-instant page loads.

The Stack

  • Framework: Astro with MDX support
  • Styling: Tailwind CSS
  • Hosting: Cloudflare Pages
  • Backend: Cloudflare Workers + KV for comments, likes, visitor counts
  • Content: MDX files committed to Git

Deployment Flow

Local MDX -> git push -> GitHub -> Cloudflare Pages (auto build)

No CMS, no database for content. Just files in a repository.

Why Not Next.js?

Next.js is great for dynamic apps. But for a blog where content changes only on deploy, shipping a React runtime to every visitor is unnecessary overhead.

Why Cloudflare?

Edge-first architecture. Static assets served from 300+ data centers. Workers for the small amount of dynamic functionality needed (comments, likes).

Performance Results

With this setup, we achieve:

  • First Contentful Paint under 1 second
  • Zero layout shift (all images have defined dimensions)
  • Lighthouse scores above 95 across all categories

Trade-offs

  • No real-time content updates (rebuild required)
  • Comment moderation requires API calls
  • Limited to what can be expressed in MDX

These are acceptable for a personal blog where publishing frequency is low and control over content is high.

Share