TL;DR

Between 11 June and 16 July, I made 58 commits to this website. What started as an overdue refresh became a new design, an upgrade to Astro 7, and—most importantly—a complete rebuild of the publishing workflow. Sanity left the project, and every post moved to local, bilingual MDX validated alongside the code.

The website is not “finished”, because it probably never will be. But it is doing its job again: keeping me motivated, letting me publish, and providing context for my games without demanding all my attention.

When a refresh stops being a refresh

I did not plan to spend an entire month on SenseiSoloDev.com. There were pending changes, areas I wanted to organise, and ideas that did not quite fit the old structure. One improvement led to another and, before I knew it, I had spent more time on it than I had anticipated.

The first commits gave visitors little to look at: dependencies, routes, locales, configuration, middleware, and several Cloudflare adjustments. Invisible work, but necessary if I wanted to stop building on top of old decisions.

Then came the part people can actually see.

A website with more room for me

I overhauled the navigation, homepage, post listings, articles, and project pages. I also upgraded the foundation to Astro 7 and added My Shelf, a monthly feature where I can gather the games, books, series, and gadgets that have been part of my life that month.

That section captured the direction I wanted rather well. The website should not be merely a showcase for two games and an archive of posts. It needed to represent more of what I make and enjoy alongside game development.

The new design addressed the visible layer, but the important rebuild was happening underneath it.

Goodbye Sanity, back to files

Until then, content depended on Sanity and a separate Studio. During the migration, I moved the posts and their images into the repository itself using Astro Content Collections and MDX.

Every published article now lives in two files when it is available in both languages:

src/content/posts/es/
src/content/posts/en/

Both versions share a translationKey, while keeping natural titles, slugs, descriptions, and links for each language. Images are local too, and the repository is once again the source of truth for what gets deployed.

This is not a criticism of Sanity. For this website and the way I work now, keeping content and code in the same workflow is simply a better fit. I can review an article, its translation, its assets, and the build output without switching context.

Removing the CMS was not just a matter of copying files. Post listings, article pages, translation relationships, tags, neighbouring posts, related projects, and the sitemap all had to be rebuilt. That was the point where a content migration became a genuine architectural change.

Publishing without breaking everything again

Once the migration was complete, the next goal was to stop every new article from relying on my memory.

I added dedicated validation for frontmatter, slugs, locales, ES/EN pairs, tags, and assets. I centralised routes, split oversized components, and strengthened SEO with canonicals, alternates, JSON-LD, and a sitemap generated from the actual content.

I also configured immutable caching for versioned covers, custom Umami events, and Core Web Vitals measurement. The latter does not mean everything has magically improved; it means I now have data to spot when a decision makes the experience worse.

Finally, I turned the complete bilingual publishing workflow into a local Agent Skill. The idea is simple: an agent can help create the ES/EN pair, check the cover, validate the sitemap, and close the Trello card by following the same process every time. This article is, in fact, the first real test of that skill.

The best validation was publishing again

All that infrastructure would mean very little if the website remained empty or dormant. Over these weeks, I published the July edition of My Shelf, a piece about physical games, the trello-sync project page, and its first devlog.

I also added the My status widget, which shows what I am playing, reading, and watching without turning every small update into a post. It remains open by default on desktop but can be collapsed; on mobile, it becomes a compact panel instead of taking over half the screen.

These additions are quite different, but they all serve the same purpose: making the website feel alive even when I spend most of my time inside one game engine or another.

The danger of building the perfect tool

I enjoy developing tools and improving processes. The problem is that there is always another refactor, another metric to add, or another section that could look better.

A website can easily become a very productive way of putting off work on my games.

That is why I do not want to close this chapter by claiming SenseiSoloDev.com is finished. It is, however, ready enough. I can publish in Spanish and English, showcase my projects, add new formats, and catch mistakes before deployment without rebuilding the system every time.

That is what I needed.

Getting back to normal

For me, returning to normal does not mean publishing every week out of obligation. It means the website stops being the centre of attention and returns to supporting what I actually want to do: develop games, share progress when there is something worth sharing, and maintain spaces such as My Shelf without turning them into another burden.

I will keep changing things, because I know I cannot help myself. From now on, though, every improvement will have to answer one simple question: does this help me create and share?