- Live Demo: You’re here now!
- Project Type: Personal
- Year(s) Built: 2016-Present
I recently decided to rebuild this site and start over from a clean slate. You can read about some of the recent changes there. I also explain on the homepage why I moved away from the open source Hugo theme I built to a private codebase.
Before I refactored the theme into what you’re reading now, I first dropped the blog portion altogether and replaced my site with what was effectively just a static homepage. The reason being, I thought I wanted to take a break from blogging to focus on different things. After a few weeks without one, I missed having the freedom to share what I was learning on a whim.
Then, I experimented with trying out a newer static site generator, Zola (a strange naming choice — it has nothing to do with planning a wedding). It’s similar to Hugo, which is what I’m used to.
The main selling points of Zola are (even) faster build times, a more user-friendly, “Jinja-esque” templating language, built-in Sass support, and a simpler setup in general. The downsides — in my opinion — are less flexibility, the absense of some key features, and confusing documentation.
In the end, I came crawling back to Hugo. I like having lots of control, even if that results in slightly higher complexity. Once you understand how Hugo approaches templating and content organization, it’s an extremely powerful tool for building websites.
Hugo, obviously, is the core of this site’s tech stack. I host the site on Netlify and accept form submissions with Netlify Forms. Newsletter sign ups are passed from Netlify to Mailerlite via a Zapier zap. I don’t really write a newsletter, but that’s a different story.
I’ve been thinking about migrating to my own VPS. I don’t like some of the decisions Netlify has made recently as a company. Doing so would increase the maintenance effort significantly, but would also keep my Linux and server admin skills sharp. I would also need to replace the form service or roll my own forms.
I use SCSS for styles with 4 types of modules:
base— files for the styling of base HTML elements, font declarations, layout styles, mixins and variables.
components— a file for each component, such as buttons or forms.
pages— styles for specific pages of the site, or types of pages (list, single, etc.)
vendors— 3rd-party styles, of which I only use
I think the reason I settled on Jamstack is the simplicity.
Webflow is great for non-technical users with design skills, but if you know CSS, building by hand is just as fast. Plus, the vendor lock-in for hosting is unappealing.
Django is my go-to for building web apps but way overkill for a simple blog in terms of development and maintenance. That puts Wagtail out of contention as well, though it may provide some tools that make building a CMS from scratch easier. I would only consider Wagtail for a commercial project with a large budget and very custom requirements.
WordPress is perfect for business and marketing websites, but unless you want to learn how to build themes from scratch or use a janky page builder, it can be difficult to customize.
So that leaves us with Jamstack sites. Nothing beats it for technical users building personal blogs. Free hosting on Netlify with low traffic. Basically zero maintenance. Secure by default. Full control over every aspect of your site. I could go on…
The only problem with static site generators like Hugo is CMS compatibility. Sure, you could reach for a Headless CMS and write the integration yourself. But it can be either expensive, or a pain when that vendor suddenly abandons their project (cough Netlify).