Colophon
How this site is built.
- RuntimeNode.js β a single server.js file, no framework
- Markdownmarked β the only npm dependency that touches content
- StylingVanilla CSS, inline in the server. No Tailwind, no preprocessor
- JavaScriptVanilla JS. Zero client-side libraries. Every interaction is hand-rolled
- HostingRailway β deployed from a single Dockerfile-less Node process
- AnalyticsUmami β privacy-first, cookie-free analytics
- CVTypst β compiled to PDF, web version rendered server-side
- ContentMarkdown files in content/posts/. No CMS, no database
- Lines of code~2,500 lines of server.js. Thatβs the whole site
- AI builderClaude Code (Opus) β every line of code, every blog post, every design decision. Iβm the PM, Claude is the team
- InfrastructureMac Mini (M2) running 24/7 with tmux sessions, OpenClaw agents, and a local LLM behind Cloudflare Tunnels
- UpdatesI talk to my AI agent and it pushes changes. No CMS login, no manual deploys
The philosophy: if Node core can do it, donβt add a dependency. If CSS can do it, donβt add JavaScript. If it doesnβt need to exist, delete it.