Colophon
How this site is built, what it runs on, and why those choices matter.
Philosophy
The Drew Archive is built to last. No JavaScript frameworks that will be obsolete in two years. No platform dependencies that can disappear overnight. No database that can corrupt. The site is static HTML generated from Markdown files stored in a Git repository. If every service I use shut down tomorrow, I would still have every word in plain text files on my own machine.
The entire site can be rebuilt from scratch with one command. That's the point.
Stack
Site generator
Hugo
Fast, single binary, Markdown-native. Builds the entire site in well under a second on my machine.
Hosting
Vultr VPS + nginx
A small Debian 12 server serving static files directly through nginx with Let's Encrypt certificates. Simple and easy to understand.
Version control
Git + GitHub
Every change to the site lives in version control. The repository is the source of truth, and every revision is recoverable.
Deployment
Shell script + rsync over SSH
Changes are merged to main, then deployed with a small script that rebuilds the site and syncs the generated files to the server. No manual uploads, no FTP.
Content format
Markdown + front matter
Every piece of content is a plain text file with structured metadata. Portable, readable, and future-proof.
Graph / Map
Cytoscape.js
The interactive graph view is assembled from content metadata and rendered in the browser without needing a separate backend service.
Search
Pagefind
Static search indexing built at publish time, so the site can offer search without running a search server.
Analytics
GoatCounter
Small, self-hosted analytics without cookies or persistent visitor profiles. The site honors Do Not Track and Global Privacy Control, and collects only enough information to understand what readers find useful. Read the privacy policy →
Comments
Remark42 + Resend
A self-hosted discussion service with one-time email login, reply notifications, moderation, persistent storage, and nightly application backups.
Backups and recovery
Restic + Backblaze B2 + Vultr snapshots
Nightly encrypted off-site backups, automated integrity checks, restore testing, and failure notifications provide a tested path to recovery beyond the VPS itself. Read how the Archive was hardened →
AI assistant
OpenClaw
A local-first AI agent that helps research, draft, edit, publish, and maintain the archive while keeping the workflow close to the source files.
What's planned
Self-hosted comments and privacy-respecting analytics are now live. The remaining long-term plan is to keep refining the publishing workflow and the paths that connect material across the archive. The goal is to grow the site without changing its foundation.
New writing still begins as Markdown. New features should be lightweight, understandable, and easy to replace without putting the archive at risk.
Typography
Headings
Playfair Display
A serif face with classical proportions, used for page titles, section headings, and the site name.
Body text
System serif stack
Clean, readable, and fast-loading. The content should be the focus, not the font files.
Code and addresses
JetBrains Mono
Used where monospaced text actually helps, including code blocks, technical notes, and donation addresses.
UI elements
Inter / system sans
Navigation, labels, badges, and supporting interface elements.
Principles
If you build something similar and want to talk about it, I'd like to hear from you.