- Site
- Astro 5, static output
- Every page is pre-rendered. There is no server to fail and no runtime to attack.
- Styling
- Tailwind CSS 4, CSS custom properties
- Two hand-built palettes; the light theme is a bespoke design rather than an inverted dark one.
- Data
- SQLite via Node's built-in driver
- Queried at build time only, read-only. No native dependency, so nothing to compile on a deploy runner.
- Validation
- Schema validation at the ingest boundary
- Malformed rows are recorded and excluded, never coerced into looking valid.
- Charts
- Hand-authored inline SVG
- No charting library. A library's defaults are the fastest way to make a bespoke site look templated.
- Interactivity
- Vanilla TypeScript, no UI framework
- The interactive needs are filtering a table and selecting a precomputed result. A framework would be weight without benefit.
- Tests
- Node's built-in test runner
- The metric functions are pure and covered against hand-computed fixtures. A metric bug is indistinguishable from a fabricated number.