Who it is for
A writer maintaining a small publication with a custom static publishing workflow.
The problem and constraints
The publishing system needs to turn content into a site while keeping publication state explicit. A custom generator also makes content checks part of the build rather than leaving them entirely to an editor’s memory.
How it is used
Maintain the post files and their publication state, run the generator and content gates, then inspect the generated static output. Client-side behavior stays minimal; the site uses self-hosted fonts.
Source
Post content and explicit publication state
Build
Custom generator → content gates → static output
Conceptual build sequence from the implementation. It is not a measured deployment trace.
A conceptual build sequence from the implementation, not a measured deployment trace. Shaded boxes are the writer’s steps.
Open diagram at full sizeRead the workflow as text
- At the source, writers maintain post files and publication state.
- The source holds post files with explicit publication state.
- Build: the custom static generator runs, then the content gates.
- Static output: self-hosted fonts, minimal browser behavior.
- Last, the writer can inspect the generated output.

Built from the main branch with published posts only and served on a local machine. Cropped to the featured dispatch and the first row of recent dispatches.
What the source currently shows
These are source-file states on the main branch as of October 2026. They do not establish 18 published posts, current live availability, or an audience count.
The main branch contains 12 test files. This is a file count, not a passing test run.
Decisions and current state
The implementation uses a custom static generator, content gates, self-hosted fonts, and minimal browser behavior. The README describes no analytics or backend.
A static site still runs whatever scripts and styles the browser is allowed to load. As of October 2026, the README on the main branch described a strict Content Security Policy with zero external origins and zero inline scripts or styles. It stated that the local preview server sent the production policy, so a violation would show as a browser console error before deployment.
No audience, engagement, delivery-speed, or uptime metric is established. The exact rejected alternatives are not documented.
Learnings
What I learned: counting content files and counting published material answer different questions.
What is implemented: explicit publication state and build-time content gates. The figures above preserve the difference between the 18 source files and the 13 marked published.
What to test next: run the content checks, reconcile generated output with the publication flags, and confirm the README’s no-analytics, no-backend description against live network traffic.