Yonnia.com
This site. A zero-dependency static generator that ships not one line of JavaScript to the browser.
- Year
- 2026
- Role
- Everything
- Stack
- Node.js, HTML, CSS
- Status
- Active
The site you are reading, and the thing that generates it.
Why hand-write it#
I was going to use Astro. What changed my mind was not dependency squeamishness but a specific observation: this site's SEO ceiling is set entirely by the HTML it outputs, and has nothing to do with what generated that HTML. And the HTML a static blog needs is far less complex than a build toolchain.
So the scope defined the tool rather than the other way round. If all I need is "turn Markdown into correct HTML", Node's standard library already covers it.
What it actually is#
- A CommonMark subset renderer, covering the syntax I actually write
- A YAML front-matter parser that supports only the shapes I actually use, and raises on anything else rather than guessing
- One route table every URL derives from — pages, Markdown mirrors, feeds, sitemap
- One
head()function that owns every crawler-visible tag - A set of schema.org builders where each entity has a stable
@idand is defined exactly once site-wide
Constraints#
- Zero JavaScript output. Table of contents, language switching, and dark mode are all server-rendered or pure CSS.
- Build-time validation. A missing description, an over-long title, a future date, a second H1 in the body — the build fails rather than shipping it quietly.
- Post-build audit. A separate script checks every page for canonical collisions, hreflang reciprocity, internal links that resolve, JSON-LD that parses, and images with alt text and dimensions.
What it costs#
The obvious one: no incremental build, no HMR. A full rebuild is about 100ms, so neither is needed yet. When it is, the content is plain Markdown and moving to Astro is a day's work.
The second: I maintain the Markdown renderer myself. Three edge cases have already forced changes to it. That cost is real — it is just currently lower than maintaining a dependency tree.