Writing

I Didn’t Need a CMS: Moving My Site from WordPress to Astro

I moved my personal site from WordPress to Astro. Here’s why, what became simpler, and how the migration went.

Why WordPress stopped fitting

WordPress worked well for my blog. I had control over the site, and creating content was easy. Being a frontend engineer doesn’t mean I need to build my own website from scratch and decide on every small detail.

After a while, though, it started to feel like too much for a site built mostly around content. I still had to keep an eye on plugins, updates, backups, and security.

Editing the site was a different process from my day-to-day work as a frontend engineer. It felt more like administering a site through an admin panel than developing it.

With Gutenberg and site editing, I could customize most of the site through the admin panel too. I liked that when I built my WordPress theme. Later, it started getting in the way of building other things and publishing them.

I wanted to work on my own site the way I do during a normal workday, with a simpler setup.

Why Astro?

First, it is static by default. For this site, that means I don’t need a heavy CMS, a database, or a PHP runtime on the server.

Second, it has a lot of features that make me want to publish more things, not only blog posts.

Markdown for posts and notes is great. With MDX, I can also add interactive React components where I need them. I can use what I already know without building a full React application around the site.

And finally, content is easy to keep in files, so Git fits naturally into the process. All of this also makes the setup friendly to AI agents.

AI tools can help with the repetitive changes or take on more of the implementation while I review it. Having the content and code in the same repository makes that easier.

What became simpler?

I still have dependencies to update for development and builds, and interactive parts use JavaScript in the browser. But in production, I only need to serve static files. There is no CMS or database to keep running.

I can also develop locally with tools and workflows I already use. When you’re used to that as a developer, it’s nice to have a similar flow for your own site.

Deployment follows git push → build → deploy, with Cloudflare handling the hosting.

Of course, this doesn’t mean WordPress is bad. It has its use cases. At this point, it just wasn’t fitting mine.

Migration

Moving my site from WordPress to Astro turned out to be straightforward. With help from AI, you can use the WordPress REST API to fetch posts and convert them into content files for Astro. You can also download the uploads folder from the server and handle the media files separately, reducing the amount of work the agent needs to do.

So far, I haven’t run into major migration problems. I had kept plugins to a minimum and built a custom theme based on an official WordPress theme. There were no complex features to move, just a blog and pages.

Was it worth it?

I have a good feeling about this change. I’m writing this just after the migration, so it’s still early. We’ll see.