Forge — 104,652 lines, 2,315 tests
A site-building substrate. Sites are declared as typed content and generated, so an accessibility or performance fix made once lands on every site built from it.
Learn more →Public repositories. The line and test counts below are counted from the repositories themselves, not estimated — I would rather show a real number than a round one.
A site-building substrate. Sites are declared as typed content and generated, so an accessibility or performance fix made once lands on every site built from it.
Learn more →The component and token layer underneath Forge: every primitive a page can be assembled from, with the design tokens that keep them coherent.
Learn more →Drives a real browser through a site along a typed journey and diffs what it finds, so a regression is caught by machine rather than by a client.
Learn more →Outreach tooling: contact handling and campaign logic, kept deliberately boring and inspectable.
Learn more →Mail configuration as data. It emits the Dovecot and Sieve configuration for a mail server, so mailbox rules are version-controlled instead of clicked into a panel.
Learn more →A privacy-focused Monero wallet in Rust, with per-account Tor isolation. Early, and honest about it.
Learn more →Everything above is Rust, and everything above has a test suite that runs before anything reaches a server. That is not a preference for ceremony — it is what makes it possible for one person to keep six projects and five live sites running without breaking them by accident.
The repositories carry an as-is, no-warranty notice. They are published so the work can be read and audited, not because I am inviting anyone to run them in production untested.