Projects

jesseahawkins.com

live July 2026 Astro Cloudflare Pages Workers D1 KV TypeScript

This site is the reference implementation of how I think software should be built by one person: boring technology chosen deliberately, decisions written down with their reasoning, and rules enforced by tests rather than by memory.

The four planes

Content is separated by what guarantee it needs, not by what folder it lives in.

  • Published — home, CV, blog, Wire, Lab. Static, zero-JS by default, survives the backend being down entirely. If a pipeline fails, the last good version still serves.
  • Interactive — Wire section pages and Lab tools. Allowed to depend on Workers and D1, required to degrade honestly. No blank pages, no infinite spinners; a failed read says it failed.
  • Private — an owner-only workspace. Nothing on it may reach a build artifact, and a script asserts that against every build rather than trusting the convention.
  • Commercial — products and entitlements. Never touches a card number; checkout is a redirect to a hosted page.

What runs on it

The Wire generates four publications from real sources on a schedule — RSS aggregation, iCal parsing written against RFC 5545, and original weekly analysis. No LLM sits in an unattended Worker: the reasoning runs in a session with a human in the loop, and the pipeline writes structured output.

The Lab hosts tools with no LLM in the loop at all, deliberately. The collectibles appraiser auto-detects across four real pricing APIs (Magic, Pokémon, Yu-Gi-Oh!, sports cards) and reports raw market prices, never a fabricated valuation. The LLM cost comparator is a static, source-linked table with a progressively-enhanced calculator on top.

Identity is hand-rolled magic-link auth on Workers and D1 — sessions stored as SHA-256 hashes, a sliding window with an absolute cap, single-use tokens consumed by an atomic statement rather than a check-then-write.

The part that matters

Every milestone that touches auth, money, or personal data passes a written schema-and-threat-model review before any code exists. That practice has paid for itself repeatedly — it caught an account-deletion cascade that would have silently orphaned organizations, and a private note title escaping into a publicly cached image URL.

Four checks gate the build: private-plane leakage, cross-tenant isolation, column-level data classification, and an event-log PII tripwire. Each one was verified to fail against a deliberately broken tree before it was trusted. A check nobody has watched fail is not a check.