python · web

sitegen3

2026-05-24

A static site generator for my personal website. It turns Markdown content, Jinja2 templates, and a TOML config into a complete static HTML/CSS site. This site is built with it.

Why I built it

I wanted full control over a small, dependency-light site without pulling in a large framework. Building my own generator kept the moving parts few and the output exactly what I wanted, and gave me a self-contained project to build end to end.

What it does

  • A small CLI: init to scaffold, build to render, serve to preview.
  • Content as Markdown with TOML frontmatter: an about page, posts, and projects.
  • Convention over configuration, with sensible defaults for paths and layout.

Built with

  • Python 3.12+, packaged with Poetry.
  • Jinja2 for templating and Markdown for content rendering.
  • Strict tooling: Ruff, Pyright (strict), and Pytest.

How it was built

The first version was one-shotted with a coding agent. I wrote up how here: One-shotting a static site generator.