This Website
Static HTML, a Node.js build script, and Cloudflare Workers. Project and writing pages render from markdown with frontmatter; the homepage is hand-edited; everything else is generated. Every post is a markdown file in git, without a CMS or app server in the middle.
Pipeline
markdown ──► node build.js ──► public/ ──► git push ──► Cloudflare
public/index.html is hand-edited. Everything else under public/ is generated by build.js and overwritten on every build: project pages, writing pages, books, colophon, 404, sitemap, feed, robots, and the Cloudflare _headers/_redirects. A push to main triggers Cloudflare Workers Builds, which runs the build and publishes the output. No manual deploy step.
Stack
- Node:
markedfor markdown,gray-matterfor frontmatter,katexfor math,cryptofor the build hash - Cloudflare Workers: static assets from the global edge; clean URLs, HSTS preload, strict CSP, and immutable caching for fonts and images, all driven by generated
_headers/_redirects - IBM Plex Sans: self-hosted woff2, Latin subset only, preloaded with
fetchpriority="high" - Google Analytics: loaded via
requestIdleCallbackso it never blocks paint
Show the work
Every page footer carries a live paint-time readout and the host. The full set of internals lives on the colophon: type, color, build hash, page count, word count, and dependency list.
The visual language follows a Show the Work doctrine: clean complexity over hidden polish, internals as the surface, signal-lime for live state.
It was a static site on Firebase Hosting before. The build stayed the same; the host changed, and deploy became a git push.