Latimer Woods
Stack
What I build with, and what I refuse to ship with.
Every technical choice here is already carrying real traffic. The stack exists to keep products lean,
public proof visible, and operating complexity lower than the industry norm.
Edge-first
Workers and Pages instead of region-bound app servers
Readably strict
TypeScript, ESM, Web Crypto, and explicit runtime boundaries
Lean by design
Fewer moving parts, fewer wasteful dependencies, lower steady-state cost
Architecture diagram
Brand surfaces · public
selfprime.net
capricast.com
cypherofhealing.com
apunlimited.com
Edge runtime · cloudflare
Workers + Hono router
JWT auth via Web Crypto · TypeScript strict · ESM only · tsup build
Cloudflare Pages
Static + SPA surfaces
Data · stateful
Hyperdrive → Neon Postgres
R2 (objects)
KV (config)
Durable Objects (WS)
Stream (video)
Language · llm cascade
Cloudflare Model Gateway
Anthropic (tier 1)
Grok (tier 2)
Groq (tier 3)
Integrations · external
Telnyx + Deepgram + ElevenLabs
Resend (email)
Stripe (payments)
GitHub Actions · GCP Secret Manager (WIF)
Observability · always-on
Sentry (errors)
PostHog (product)
factory_events (first-party)
Synthetic mon.
Why this stack
Opinionated choices that keep the platform coherent.
Edge over region
Cloudflare Workers everywhere
Every API runs at the edge, not inside a single-region app server. Lower latency, fewer capacity rituals, and fewer reasons to over-provision compute.
Router
Hono, not Express or Next
Hono treats Workers as a first-class runtime instead of a compatibility afterthought, which keeps the platform smaller and more honest.
Database
Neon Postgres via Hyperdrive
Postgres for durability, Neon for branching, Hyperdrive for sane edge connections without load-bearing pool management.
Auth
JWT via Web Crypto
Short, auditable verification paths with fewer transitive dependencies and no Node-only assumptions hiding in the background.
LLM
Three-tier cascade: Anthropic → Grok → Groq
Quality first when quality matters, lower-cost throughput when variance is acceptable, and low-latency fallback when speed dominates.
Frontend
Static first, hydrate only what moves
Most of the site is HTML and CSS served fast. JavaScript arrives only where interactivity earns its keep.
Secrets
WIF + GCP Secret Manager
No long-lived secrets in CI settings, no secrets in repo config, and a cleaner rotation story when the platform changes.
Public proof
Same-origin curated JSON, not public operator APIs
The public layer shows rigor without exposing control surfaces. Proof is public; power stays authenticated.
Hard constraints
What I refuse to ship with.
These are design constraints, not taste preferences. They keep the platform edge-native, auditable, and lean.
process.env anywhere. Workers do not have it. Use bindings.
Node built-ins like fs, path, or Node crypto.
CommonJS require(). ESM only.
Buffer where Uint8Array, TextEncoder, and TextDecoder are the right answer.
Raw fetch without explicit error handling.
Secrets in source or wrangler.jsonc vars.
*.workers.dev URLs in user-facing flows.
any in public TypeScript APIs.
Runtime changes that skip the registry and consumer update pass.