Decision record
For everyone
0003 · Server-rendered Flask, no build step
- Status: Accepted
- Date: 2026-08-04
Context
The pages are tables of short strings and a few forms. A JavaScript toolchain would have to be kept current for the life of the project and buys nothing against that.
Decision
Flask and Jinja, one stylesheet per lane with Blueprint's design language expressed as CSS custom properties, one small script, no bundler. Asset URLs carry a content fingerprint, so a deploy never serves new markup with an old script.
Consequences
git clone plus pip install is the whole setup, and deploys are a restart. Rich
client-side interaction costs more to build. CSS has one global namespace, so lane
sheets prefix their private classes (tests/test_css_namespace.py enforces it).