Sub‑millisecond feel. Zero drama. Fewer moving parts. Faster reads. Small surface area.

Ship static files

No bundler. No JS build step. Prebuilt CSS, minimal JS. Pages stay fast, deploys stay boring.

Small surface area

FastAPI, Jinja2, Alpine.js. Less complexity means fewer failure modes and faster iteration.

Edge-first

Running on Fly.io, close to users. Auto-start, auto-suspend. Low latency without a big fleet.

Instant feel

Most interactions should feel instant. Local reads and a simple stack make that possible.