A new adventure on static site generation

2023/01/15 - Indie Web - David Frank
adventure trail over a hill
Photo by Krivec Ales

New year resolution#

One of my resolution for 2023, is to setup a new personal website, for gathering my gamedev thoughts and experiments, in an open & searchable archive.

I have been running a personal blog since 2005, but it was written in Chinese, focused on Anime subculture, with random tech commentary and life musing blended in between. Pivoting that site to my gamedev channel would be too weird at this point.

Plus I needed an excuse to get away from the old WordPress ecosystem and the LAMP stack after 18 years of friendship; time to explore some static site generators.

Having done “full stack development” in the past, my goto web dev tools were Node.js and npm. But my time with them were often troubled:

  • Huge node_modules folder before you even start;
  • Ultra modularity results in dependency hell;
  • Packages breaking semantic versions promise on upgrade;
  • Too many commands and config files for a simple job.

This time, I would really like an integrated, hassle-free tool.

A standalone generator#

This is not my first contact with static site generators by the way: having used Jekyll for landing pages, MkDocs for code documentation, Metalsmith for more customizable websites. All of them were usable, but none really fits my goal.

Specifically, all of them assumed you are fine with installing a few prerequisites, and you are fine with installing package managers to get these prerequisites. But I will take such bully no longer. Why can’t we find a standalone executable that does static site generation well?

Enters Zola.

If you are reading this post then my Zola-generated website with a custom-made theme is online. Using the built-in Tera template engine, I was able to structure the site exactly how I wanted it. The layout was done using a mostly classless CSS library, Pico. The post was composed in Markdown, then organized using plain folders, with human-readable TOML as metadata (aka front matter).

Zola handles the rest, in just 4 commands.

Oh and it is written in Rust for speed and reliability. Hope I have your attention by now.

Unpaid advertising and Future plan#

I am not usually nerdy enough to rave about my favorite libraries or softwares, I only do that with Anime and Indie games. But Zola clearly exceeded my expectation, it is worth a special shoutout.

There are still more features I would like to explore building a modern indie website in 2023, but this is a decent starting point. When I am done finalizing this theme, it will probably be open-sourced for others to build on. So stay tuned!


🔎 Search Results