Blog migration from Gatsby to Astro for a cup of coffee

Blog migration from Gatsby to Astro for a cup of coffee

Recently I was preparing a presentation for a conference and one of my slides says “Code is cheap. Quality is not.” and I started thinking - how cheap it is actually.

Then I realized I have a problem with my blog where I can’t push new posts because I’m on a very old stack. Namely, Gatsby 3 with React 16 on Node 16. I wanted to rewrite it for a long time, but I know it’s like a week of work for a highly motivated me. And guess who wasn’t highly motivated enough for the last 2 years to do it?

The experiment

So I decide to give opencode a try and try one of the open-source models. A fast one. A cheap one. DeepSeek V4 Flash. This kind of migration is like creating a blog from scratch. Very different stack, very different environment.

I’m in a migration business quite long and I know how important it is to have a validation step. So I did something rather unnatural for a blog - I first implemented e2e tests in Playwright. And the migration plan of course.

At that point it cost me $0.59! That could be cheaper I guess but I derailed with taking “before”-screenshots through AI as well to later learn that the model can’t compare them anyway 😉.

The migration

With safety net in place I run the migration. E2E tests really helped, but of course the migration required a few more sessions to polish things out but it worked! I’m not only on a newer stack, but I’m also on Astro, which I wanted to try for long because of the islands’ architecture.

Additionally, I run a TypeScript migration for my React components. Not necessary, but I felt it will complete the migration.

The migration pull request. Not a small thing!
The migration pull request. Not a small thing!

The cost

Here’s the breakdown:

The whole thing took one afternoon. An afternoon, and five dollars. That’s roughly what I paid for a cappuccino in Dublin recently (September 2026).

Of course, I enjoyed both - cappuccino ☕️ and the migration 🤖 but I live in shock now, how quick and cheap it was.

And when it comes to quality, I think it is there for this blog. The content is still human. More to come…