Ditching SSGs for a hand-crafted Website

exitnode1 pts0 comments

rz01.org

Ditching SSGs for a hand-crafted Website

Posted on 2026-05-29

Introduction

Ok, this is not really a 100% hand-crafted website but new articles and some other parts are now. Here’s the story: I used Hugo as a static site generator (SSG) for a long time and started to get bored. With Hugo, I was also much closer to the final product than, say, with WordPress, but it didn’t feel like I was personally creating the website. So I simply took the HTML code generated by Hugo as a basis, copied it to a new directory, and moved it to a new Git repository. Then I<br>started simplifying the HTML code and the CSS file and adapting them to my needs. For this, I used the following online tools:

W3C Markup Validation Service - The classic that pretty much everyone knows. It helped me generate valid HTML code and track down errors.

Smolweb Validator - This validator helped me make my CSS file more resource-efficient and to remove other unnecessary elements. I’m not there yet, partly because I still don’t fully understand CSS.

Quality of Life Stuff

Now I had the problem that while I want to write my HTML code by hand, I don’t want to keep rewriting parts like the page header with the navigation bar, CSS includes, etc., and updating them in a thousand places whenever something changes. The solution for me are SSI (server-side includes). This blog is hosted on Uberspace, which runs Apache to host their users' websites. To configure SSI, I placed the following .htaccess file in the web root:

Options +Includes<br>AddType text/html .html<br>AddOutputFilter INCLUDES .html<br>AddType text/html .htm<br>AddOutputFilter INCLUDES .htm

This is how the beginning of all my HTML files looks like:

The following is the file includes/header.inc which is then inserted into all the HTML files right at the top:

rz01.org

Main -<br>Bookmarks -<br>Doom WAD Logbook -<br>About / FAQ / Privacy -<br>Contact -<br>RSS

Writing new Posts

Whenever I want to create a new post, I copy my post template in template/index.html to a new folder which resembles the post slug:

$ cp -R template newpost

The result is this blog post skeleton saved as newpost/index.html and can be accessed via the URL https://rz01.org/newpost :

Page Title goes here

Posted on XXXX-XX-XX

Introduction

Text goes here

Now I am writing the new post by editing the newly created skeleton. For this I use vim as an editor with the awesome plugin emmet-vim. This plugin allows me to easily create skeletons for lists, tables or even for simple paragraphs.

RSS and the blog post list

Especially when it comes to RSS, I have the advantage that the feed was originally generated by Hugo. I simply update the global element, copy the latest block, and customize it for my newest post:

Ditching SSGs for a hand-crafted Website<br>https://rz01.org/handcrafted-html/<br>Thu, 29 May 2026 11:00:00 +0000<br>https://rz01.org/handcrafted-html/<br>Ok, this is not really a 100% hand-crafted website....

Updating index.html is even easier:

2026-05-29<br>Ditching SSGs for a hand-crafted Website

Is it awesome?

Yes, I do think so. But as you may have noticed while reading, I use the word “I” quite often, which is, among other things, an indication that all of this may not make much sense from an objective perspective, but personally brings me a lot of joy. By removing the abstraction layer of an SSG, I feel closer to the browser with the code I write, and I’ve actually learned quite a bit about HTML and CSS in 2026. My posts feel even more authentic, and I also like<br>that I’m not versioning code in Git that still needs to be interpreted, but the end product itself. But don’t get me wrong: Hugo and other SSGs are great. I just wanted my website to be written, not generated. Maybe that’s also due to the current trend of having everything generated, which I don’t really like.

I am honestly interested in what you think - especially if you have suggestions for improvements. This is not the final version of what my website looks like or how it is built and it will never be. Please contact me directly or comment on HN.

html website hand post crafted like

Related Articles