2026-06-10

sitegen3

python · web

A static site generator for my personal website. It turns Markdown content and assets, plus a config, into a finished 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. Writing my own generator meant fewer moving parts, output that is exactly what I want, and a self-contained project to build end to end.

What it does

It renders an about page, posts, and projects from Markdown with TOML frontmatter, generates the index pages, and copies assets through. A small CLI covers the whole workflow: init to scaffold, build to render, serve to preview.

Built with

  • Python 3.12+, packaged with Poetry.
  • Jinja2 for templating and python-markdown for rendering content.
  • Ruff for linting, Pyright in strict mode for type checking, and Pytest for tests.

How it was built

The first version was one-shotted with a coding agent. Here's a writeup of the process: One-shotting a static site generator.