2 min read

Hello world: why this blog runs on Astro

The reasoning behind picking a static site generator over a CMS, and what it means for how often I'll actually write.

Abstract line chart on a dark background

Every few years I rebuild this site. Not because the old one broke, but because the act of rebuilding is a good excuse to question assumptions. This time the assumption was: a blog needs a backend.

It doesn’t. A blog is a folder of Markdown files and a build step. Everything else — comments, search, “related posts” — is optional decoration that you can add later if you actually miss it.

What I optimised for

The thing that kills personal blogs isn’t design, it’s friction. If publishing means opening a CMS, logging in, fighting a rich-text editor, and clicking through four screens, you stop publishing. If publishing means git commit && git push, you keep going.

So the requirements were short:

  • Write in Markdown, in my editor, with my snippets.
  • One command to publish.
  • No server to patch, no database to back up.
  • Fast enough that I never think about it being fast.

Astro hits all four. It renders every page at build time, ships plain HTML, and only sends JavaScript when a page explicitly asks for it. This page you’re reading has one small inline script, and that script is just the theme switcher.

What I gave up

No comments. No full-text search out of the box. No dynamic “reading list”. All of those are solvable with a client-side island or a third-party embed, but none of them were the reason I wanted to write, so none of them shipped in v1.

If you’re setting up your own site: resist the urge to design the perfect blog before you have posts. Ship the folder of Markdown. Add features when you can name a specific post that needed one.


Next up, I’ll write about getting this thing onto Cloudflare Pages and what the build settings actually need to be.

metaastrostatic-site