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.