Hello, Next.js
June 22, 2025 · 722 words · 4 min read
Why I ditched my custom setup and let Next.js run the boring parts.
This site just moved to Next.js.
For a long time it ran on a custom static site generator I wrote myself. Routing, markdown, templates, assets, the whole thing. If I was going to have a personal site, surely I had to "really" build it, right?
The custom generator made sense at the start. I wanted a playground and full control over every layer, I find there's a lot of joy in that, especially early on. You touch everything, you learn a lot, you fail, and when it finally works you feel clever. Then about three years went by and what used to be a fun weekend hacking session turned into maintenance I just kept postponing. Adding a new page meant remembering how the system worked, fixing whatever I'd break by touching it again, and then maybe writing the actual page if I still had the energy. More time on the tool, less time on anything visible. I didn't really need my own build pipeline just to publish a paragraph. It had become habit, and any PM worth their salt will tell you habit is a terrible reason to keep complex systems alive.
Meanwhile, work changed. My days got fuller, my evenings got shorter, and when I finally sit down at the computer at night, I want to use my tools, not debug them. The custom generator had to go.
I had two favourites. Astro and Next.js. Both are good, both popular enough that I don't have to worry about them disappearing next week, both wildly overqualified for a personal site. I happened to be working on a small project with two versions that shared almost the same content type, so I built one in each to see how they actually felt.
Astro feels really good when you're mostly focused on content. You write, you organise, you keep things tidy. It nudges you toward calm. You're building a site, not an app, and that's fine. Next.js feels different. Once you start adding interactive components, it makes sense very quickly. You're already thinking in React, already one step away from "this is just a little app now."
Somewhere in that process I realised this wasn't just a framework comparison, but a test of what aligned with my instincts. Sometimes I want stillness. Write something, publish it, be done. Other times I want motion. Build fast, hook things together, watch stuff change on screen. Astro rewards the calm side. Next.js rewards the control side. Both instincts are me, just not at the same time, and I don't want two platforms for two moods!
This site has never been just a calm blog. It's always been both a journal and a sandbox. If all I wanted was a quiet place to write, I'd use Wordpress or Bear and never think about build tools again. But some days I want to try a small UI idea, or wire up a weird little feature that doesn't justify its own project. Next.js lets me keep calm and control in one place. MDX took some fighting to get working (meh, it has a reputation, and I can confirm it), but once it was set up it stayed out of the way and gave me exactly what I wanted. Long form writing plus the ability to drop in components whenever an idea needs more than text.
I don't need to rebuild routing or markdown pipelines just to feel like the work is "real." I also don't have infinite evenings anymore, and that's okay. I'd rather accept that and adjust than pretend I still have the time to maintain something I've clearly outgrown.
So hello, Next.js! And goodbye, Kalimera. And goodbye to the part of me who thought every personal site had to be a full stack project. I'm still optimistic about the web, I still like late night ideas, I still think small personal sites matter. I just want my setup to support that optimism instead of draining it.
If you're reading this, you're catching the site at the start of its Next.js phase. There's still a pile of old posts in the old system that need migrating, but past me invented enough custom syntax to make that just manual enough to be annoying. They'll make their way over, one evening at a time. We'll see how long this one lasts.