Inspiration
Atlanta is running two opposite water problems at the same time. Its combined sewers downtown were built between 1890 and 1930, and in dense districts like South Downtown roughly 81% of the ground is paved — so a hard rain sheets straight into a 100+ year-old pipe network that was never sized for today's cloudbursts. The result is chronic street and basement flooding, a federal consent decree, and billions in gray-infrastructure costs. Then, weeks later, the same city swings into hot, dry spells where trees, parks, and creeks are starved for water.
We wanted to show that the same green infrastructure that stops a flood can bank that water for the next drought — and that the right solution is different on every block. The neighborhoods hit hardest (Vine City / English Avenue, Westside / Proctor Creek) are also the most socially vulnerable, so getting the engineering and the prioritization right is an environmental-justice question, not just a civil-engineering one.
What it does
StormShield ATL is a map-based stormwater intelligence dashboard for Atlanta. It lets you:
- Explore 5 documented flood zones on an interactive Leaflet map, each scored for flood risk, imperviousness, available land, soil infiltration, and vulnerable population.
- Simulate a real storm event — a 1-hour, 2.6 in/hr cloudburst on the South Downtown sub-basin that sheds ~2.8 million gallons of runoff into a 48" combined main rated at ~2.7M gal/hr, driving it to ~105% capacity with live pipe-utilization, overflow, and flood-risk meters.
- Compare GSI solutions — bioswales, rain gardens, Silva-Cell tree trenches, permeable pavement, a smart storage / real-time-control network, and retention basins — each with a physically sized footprint and the capture it can realistically achieve in that zone.
- See a per-zone feasibility matrix (Recommended / Feasible / Limited / Not Suitable) so the tool says plainly when a practice won't fit a land-scarce district.
- Switch to drought mode, where the Smart Storage Network redirects captured peak flow toward river/creek baseflow recharge and non-potable reuse instead of dumping it back to the sewer.
- Trace every number to a Data Sources page citing EPA, the Georgia Stormwater Management Manual, university stormwater centers, and municipal monitoring programs.
How we built it
The app is a React 19 + TypeScript front end built with Vite and Tailwind CSS. The map is Leaflet / React-Leaflet, charts are Recharts, and icons are Lucide. All zone, scenario, and intervention data lives in local JSON so the demo runs fully offline.
The engineering core is a set of plain-TypeScript planning models. hydrologyModel.ts estimates runoff with a rational-method-style formula (rainfall × drainage area × runoff coefficient × 0.623), derives each zone's pipe capacity from its design-storm volume de-rated by an age/condition factor, and computes overflow as max(0, water entering pipe − pipe capacity). On top of that, each GSI card is sized from first principles — void ratios, reservoir/media depth, ponding depth, and infiltration rate — against the zone's actual impervious acreage and available-land score. Real rainfall context comes from a 2-year Open-Meteo daily precipitation archive for Atlanta, and infrastructure evidence is normalized from the Atlanta Regional Commission's public Stormwater Failures dataset.
Challenges we ran into
The hardest part was making the numbers honest. Our first GSI percentages were borrowed from the literature — but a "70% bioswale" or "83% permeable pavement" figure is an annual volume reduction, not the fraction a practice captures during a single 2.6"/hr cloudburst. When we sized those claims to the land South Downtown actually has (~43-acre sub-basin, ~35 impervious acres, an available-land score of 22), the truth came out: capturing 70% with bioswales would need ~10 miles of swale, and a true retention basin needs 1.5–2 acres the zone simply doesn't have. We re-derived every card to single-event capture that fits the real footprint, and made the UI admit when a solution is Not Suitable.
Keeping the model internally consistent was the second challenge — runoff volume, pipe capacity, overflow, and the 105% overload all have to agree, and changing one ripples through the live meters. We also hit a subtle rendering bug where the analytics panel re-renders every animation frame, so a naive useState + setTimeout kept resetting metrics to zero; we had to compute values directly from the timeline progress instead.
Accomplishments that we're proud of
- A physically validated GSI model: every captured-gallon figure traces back to void ratios, reservoir depth, and a footprint that fits the zone — sized against the Georgia Stormwater Management Manual and EPA guidance.
- An honest tool that distinguishes annual performance from single-event reality and tells users when a popular green solution won't work on a given block, instead of overpromising.
- A complete, cited Data Sources bibliography linking each metric to a government, academic, or municipal source.
- A polished, cinematic dashboard — animated rainfall, live hydraulic meters, and a 7-zone feasibility matrix — that makes combined-sewer hydraulics legible to a non-engineer.
What we learned
Green infrastructure is not one-size-fits-all — land availability dominates everything. In a dense, paved downtown, permeable pavement and underground smart storage do the heavy lifting because pavement is the one resource the zone has in abundance, while rain gardens and surface basins are non-starters. We learned how combined-sewer systems surcharge, how to size BMPs from storage and infiltration fundamentals, and just how wide the gap is between the percentages on a marketing sheet and what a 100-year-old pipe experiences in a single hour of rain.
What's next for Storm Shield ATL
- Replace the presentation-grade formulas with EPA SWMM / HEC-HMS modeling and real City of Atlanta GIS pipe, inlet, and manhole data.
- Add cost modeling and prioritization so cities can rank interventions by gallons-captured-per-dollar and by social vulnerability.
- Layer in community input and environmental-justice weighting so the most flood-exposed, most vulnerable neighborhoods rise to the top.
- Wire up live sensor / rain-gauge feeds to move from simulation toward real-time flood warning and adaptive storage control.
- Generalize the engine beyond Atlanta to any city with a combined-sewer flooding problem.
Built With
- leaflet.js
- lucide-react
- openstreetmap
- react
- requestanimationframe
- typescript
- vite
Log in or sign up for Devpost to join the conversation.