5N3BLOG ← 5N3

Building this blog

Why this journal is a folder of markdown files and one build script, with no framework, no database and no dependencies.

Project
The 5N3 Domain
Topic
Software
Difficulty
Beginner
Reading time
2 min
Published
Last updated
Never revised

This site is where I log what I'm building and what I'm chasing: homelab projects, certification journeys, endurance training, all of it. Before any of that could go up, the blog itself had to exist. So naturally, the first entry is about the blog.

The constraint#

Everything on this domain follows the same rule: minimal, self-hosted, and understandable end to end. The tracker runs on a VPS I manage myself. The home page is a single HTML file. A blog that pulled in a framework, a headless CMS, and three hundred npm packages to render text would have broken the theme of the whole place.

So the requirements were short: posts are plain markdown files, the output is plain HTML that any web server can serve, and the build must not depend on anything I didn't write.

How it works#

The whole pipeline is one folder and one script:

Blog/
  posts/        <- one .md file per post, front matter on top
  assets/       <- theme.css (shared with the whole domain) + blog.css
  build.mjs     <- ~350 lines of Node, zero dependencies
  dist/         <- the generated site - what actually gets served

Running node build.mjs reads every markdown file, converts it with a small purpose-built parser, and writes out the index, one page per post, an RSS feed, and a sitemap. There is nothing to install. If Node exists, the blog builds.

The design tokens, the matte black and the one red accent, aren't defined here at all. They live in a shared stylesheet used by every site on this domain, so the journal automatically looks like the tracker, the portfolio, and the home page.

What "journeys" are#

Some things worth writing about aren't single posts. They're long arcs with a finish line. Training for an Ironman. Working through a certification. Those get a series tag in the front matter, and the build groups them into Journeys: multi-part logs with their own navigation and an "in progress" badge that flips to "complete" when the goal is done.

That's the part I care about most. A write-up published after the fact is tidy but dishonest, because it hides every wrong turn. Logging in parts, while it's happening, keeps the record honest.

What's coming#

The queue, in no particular order:

  • The self-hosted media server build
  • Road to Ironman, from a standing start
  • PADI Open Water certification
  • Infrastructure write-ups as this domain grows

If any of that sounds interesting, there's an RSS feed. There is no newsletter and no comments section, and nothing here tracks you.