Skip to content

Design decisions

The real architectural choices are recorded as short ADRs (Architecture Decision Records). Each one captures the context, the decision, its consequences, and the alternatives that were weighed — so the "why" isn't lost.

# Decision
0001 Data ingestion — assembled Level 2 volumes from NOAA's public S3, dedupe on scan time
0002 Backend rendering — render server-side to georeferenced images
0003 Storage model — raw volumes on disk are truth; SQLite indexes them
0004 Frontend stack — MapLibre + light vanilla JS, no heavy framework
0005 Radar site selection — nearest covering site from a bundled table
0006 Configuration — one config source, env-driven
0007 Rendering geometry — gate placement, projection, the dBZ palette
0008 Mutable locations in SQLite — locations become persisted state, env seeds only
0009 Retention & pruning — bound the archive by age and/or size
0010 Web-triggered backfill — one-click backfill as an in-process async job; two-writer safety via WAL
0011 Live-chunks frame — near-real-time frame from the chunks bucket, reconciled to assembled
0012 Intra-volume SAILS cuts — surface each 0.5° surveillance cut as its own frame
0013 Runtime retention — retention becomes DB-backed runtime state; env seeds only

New architectural decisions should be added here as the next numbered file — see Contributing.