It’s been a while since I’ve posted an update, but today I’m sharing some improvements I’ve made to the site.

Out with the old, in with the new

I’ve re-built the website, going to the latest version of Astro (v4.6.3 to v5.7.12) , and while the migration was straightforward, it gave me the perfect opportunity to revisit some other tooling decisions I’d made earlier. One of those was my CMS setup.

The previous website approach relied on maintaining markdown files directly. This was fine, though I think it created just a small amount of friction for me that has resulted in me not writing anything. That’s when I realized that a CMS based system could be an interesting topic for me to look in to. First for my own needs, to make managing the blog posts more easy. Though also as I see many client solutions being ā€œsimpleā€ websites that typically are based on CMS solutions, usually WordPress.

Though there are many CMS options beyond WordPress; in fact, JamStack lists 131 headless CMSs alone at time of writing. WordPress seems to be the go-to solution, though personally, I needed something more lightweight and I want to avoid any potential from the Matt Mullenweg driven dispute over WP Engine dispute and such. Who knows where that would lead.

In the past, I’ve come across Decap CMS (formally known as Netlify CMS) quite a lot. It seems like a good mix of simplicity, but also the fact it is a Git based CMS. This has been the most important factor for me, as I would like the website to be static and avoid the need of sourcing CMS data from a Database. That’s also when I then came across Sveltia CMS, which ultimately is what I am using to write this post now.

Why Sveltia CMS?

Sveltia CMS is essentially a spiritual successor to Decap CMS. As they claim themselves:

Built from the ground up, Sveltia CMS offers excellent UX, DX, performance, security and internationalization (i18n) support.

There are many claims in the Sveltia CMS README about how the project is better than Decap. I took these claims at face value, as I have no personal Decap experience to compare against. Though for a low stakes personal project, I think that is a reasonable trade off.

I was also keen to experiment with an internationalization (i18n) set up that would allow me to have both English and Danish content.

Going global: i18n support

Here’s where things get interesting. I’ve now built out full internationalization (i18n) support for the site, with English and Danish language variants. This was partly inspired by my own curiosity about how static site generators handle multiple languages, and partly because—well, I’m living in Denmark, and it felt right to support the language of the country I live in.

The catch? I barley write Danish at all. So what’s also great with Sveltia CMS, is that I can perform a one-click translation using an AI. Is it going to be perfect? I doubt it. Though I can _guarantee _it will be a lot better than any Danish I can write.

Artificial Intelligence

Sick of reading those words? Me too. Anyway, I’ll keep it brief. Since my initial website, AI really has exploded. In fact, a lot of this website was AI-assisted work. Super useful, now that I also have limited time due to a newborn.

I’ve found that Visual Studio Code’s GitHub Copilot is actually quite good when it comes to working with front-end development. It’s especially useful to get ā€œthoughtsā€ on how to work with libraries you may not have much idea about (such as Svelita/Decap). Though for me, a huge time saver was to be able to make a query such as this simplified request: ā€œMy old portfolio is at #some-directory, move it into the new #directory following Z, Y, Zā€. Then sure enough, it pops off Powershell commands and such to move things around.

I used a lot of assistance styling the website too. Though upon review, I do think there’s plenty that can be optimized further. I find AI can often just take an easy path to get the thing done, and not the ā€œcorrectā€ approach of ensuring separation of concerns and other ā€œbest practicesā€. This is also why using AI has been defined as a ā€œtechnical debt generatorā€ by some, including me, as it can often get things working but in a way that an inexperienced developer would have done it.

The technical stack

For those curious about the specifics:

  • Static site generator: Astro (latest)
  • CMS: Sveltia CMS
  • i18n: Astro’s built-in i18n routing
  • Hosting: Still deployed to Bunny CDN/Storage

The site continues to be fast, reliable, and delightfully minimal. Just the way I like it šŸ˜„

What’s next?

I’m settling into this new setup and will try to publish more frequently, now that the infrastructure feels right. I’d also like to explore more of Sveltia’s capabilities there’s potential for richer content workflows down the line.