
Rebuilding my site: from WordPress to Astro on Cloudflare
On this page
For years this site was a WordPress install. It worked, until it didn’t. Plugins needed patching, the dashboard got slower, and every login reminded me I was renting a small, fragile server I didn’t really want to babysit. So I rebuilt the whole thing from scratch as a static Astro site on Cloudflare. This post is the honest tour of that decision.
What I actually wanted#
Before touching code I wrote down the things that mattered. Not features, feelings.
- Fast, everywhere. Pages should appear instantly, even on a phone with one bar.
- Nothing to patch at 2am. No database, no admin panel facing the internet.
- Content I own. Posts should live in my git history, not a database I have to back up.
- A look that’s mine. A dark, calm, engineering-console feel, not a theme everyone recognises.
That list quietly ruled out WordPress and pointed straight at a static site.
Why Astro#
Astro lets me write each post as an MDX file and ships plain HTML to the browser. Pages are built ahead of time, so there’s no server doing work when you visit, which means there’s almost nothing to attack and nothing to keep running.
The content model is refreshingly small. A post is a file with some structured fields at the top and Markdown underneath. The logic that decides whether a post is live fits in a few lines:
export function isPublished(post: Post): boolean { const now = new Date(); return post.data.draft !== true && post.data.publishedDate <= now;}That tiny function replaces a whole publishing workflow. A future date hides a
post until its day arrives; flipping draft keeps something out entirely. No
scheduler service, no cron plugin, just data and a build.
Why Cloudflare#
Once the site is plain files, hosting becomes almost boring in the best way.
Cloudflare serves the built pages from locations close to whoever’s reading, so
the site is quick in the UK and quick in Australia without me thinking about it.
A push to the main branch triggers a build and a deploy. That’s the entire
pipeline.
git push origin main# Cloudflare picks it up, builds the site, and ships it to the edge.The part that surprised me#
I expected the migration to be the hard bit. It wasn’t. The hard bit was restraint. With a blank canvas it’s tempting to add a theme switcher, animations, five fonts, and a comment system. I deleted most of that before it existed and kept the site to one dark theme done properly.
The best feature I shipped was the one I didn’t build. Every thing you add is a thing you maintain forever.
Would I do it again#
Yes, and I’d do it sooner. The site is faster, cheaper, and calmer. My writing lives in files I can read in ten years. And because everything is reviewable in a pull request, the site feels less like a property to defend and more like a project I enjoy.
If you’ve been eyeing your own crusty install and wondering whether it’s worth it: it is. Start small, move one page, and let the quiet of a static site win you over.


