This blog was built using a custom CMS

15/06/2026 | Álvaro Palma


More than a year ago, I opened my first blog ever at this same url. It started as an Astro project, but shortly after, I created a custom static site generator from scratch (code still available in this new repository).

It was really fun! I think I managed to build something usable. Useful tho? That's a different story.

I wrote about the experience on this post. Doing a retrospective now, it seems like it has a lot of moving parts. The simplicity I initially aimed for kinda disappeared. Every new article was an exploratory task on "how the f*ck was I supposed to do this", and every new update suddenly seemed like a daunting task.

I don't think a personal blog is supposed to feel that way lmao. Got the experience, had fun, but that's all.

Migrating to Lume

If you don't know it, there's this amazing static site generator built natively for Deno called Lume. Not only it relies on the good old Deno we all knew and loved (before delving into the chase of Node compatibility), but it's also built by a fellow spaniard, who also happened to build the templating engine powering this very page you are reading (Vento, might write a post about it someday). Love to see that I'm not the only spaniard succumbing to the Deno fever! (tho I would love to connect to more people from Spain who prove me wrong!).

Key advantages

  1. I still get a super simple site generator that grows with me. It's got a lot of plugins for common things I honestly didn't want to deal with, like generating an RSS feed, posts queries, image resizing and transformation...
  2. It feels kinda like the old style web. You can totally use Lume with TSX, but I love the fact that we can use nunjucks-like (and nunjucks itself) templating engines. Build step for assets pipelines is also optional.
  3. While having a small-ish community, it's very popular in the Deno ecosystem, with a growing community, tons of examples and super well documented. It's also very simple to reason about when it comes to customizing the behaviour via plugins.
  4. It's a project I'm proud to contribute to, even if it's only to its plugin ecosystem or by spreading the word (like I'm doing with this post).
  5. It's got a built-in integration with another in-house project, LumeCMS. I'm actually writing this article using it and the experience is awesome!