I’ve had a WordPress site for years. It worked fine. Fine being the operative word — it was slow, the editor frustrated me, and every update felt like defusing a bomb. Elementor made it look decent but added another layer of abstraction between me and the actual HTML.
So I rebuilt it. Here’s what I learned.
Why Astro
The pitch for Astro is simple: it’s a static site generator that ships zero JavaScript by default. For a blog like this one — mostly text, some images — that’s exactly right. The pages are fast because there’s almost nothing to load.
The developer experience is good. The component syntax feels like a natural extension of HTML. Content Collections (Markdown files with typed frontmatter) are a clean abstraction for blog posts. The build output is predictable.
I looked at Next.js, Gatsby, Eleventy, and Hugo. Astro won because it felt like the least opinionated tool for this specific job. It doesn’t assume I want React everywhere (though I can add it where I actually need it).
Typography as design
Most of the design decisions on this site are typography decisions. The two fonts are:
- Syne — for headlines. It’s a display font with variable weight and a geometric character that still feels friendly. At heavy weights it has presence without being aggressive.
- Rubik — for body text. Slightly rounded, very readable at small sizes, works well at UI scale too.
They contrast well. Syne is a bit strange; Rubik is reliable. Together they feel editorial without being precious.
What I kept simple
No dark mode — the light theme is deliberate, not an omission. No comments system. No newsletter signup. No analytics JavaScript dropped on every page load.
The goal was a site I’d actually want to use, not a demonstration of every feature I could implement.
The source is all Markdown files and Astro components. When I want to write something, I open a text editor and write. That’s the whole workflow.