← all projects

neko_ssg

pythonweb
status
wip
stack
python, markdown, html

markdown files go into content/, html comes out in public/, and a single base.html decides what it looks like. three commands: new makes a post, update fixes its front matter, build renders the lot and writes an index.

the constraint was no dependencies at all — the standard library only. front matter is parsed by hand between two --- lines, tomllib reads the config, and everything that goes into a page is escaped through html.escape rather than trusted. it is the same shape as the pipeline behind this site, just written out by hand instead of handed to a bundler, which is exactly why it was worth writing: you find out what a generator actually does when there is no framework doing it for you.