Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for aqua-signal

Inspiration

I live with the same question a lot of city residents have: the river running through town is measured every fifteen minutes by public sensors my taxes already paid for — temperature, dissolved oxygen, pH, turbidity — and yet nobody ever reads those feeds. The data is free and public (the USGS National Water Information System), but it sits in raw time-series that no resident, journalist, or city analyst will ever open.

For my first hackathon I wanted to close that last mile: turn open sensor feeds into a one-glance, honest answer to "how is our river doing, and which way is it heading?" — and to do it in a way where every number on the page can be traced back to the exact rule and the exact readings that produced it.

What it does

aqua-signal is a self-contained dashboard that screens 10 urban rivers across the US — Philadelphia, Trenton, Washington DC, Pittsburgh, Cleveland, Clinton (IA), Atlanta, Portland, Wilmington (DE metro), and Baton Rouge — from live USGS continuous-monitor data.

For every river it pulls up to 400 days of daily-mean water temperature, dissolved oxygen, pH and turbidity, then runs a transparent rules+statistics assessment engine:

  • Threshold rules from published freshwater criteria (EPA pH 6.5–9.0, DO ≥ 5 mg/L warmwater criterion, temperature/turbidity stress bands).
  • Seasonality-free trend detection — the last 30 days are compared against the same calendar window one year earlier, so normal spring-to-autumn warming is never mistaken for degradation. A raw Mann-Kendall test with Sen's slope is shown alongside for context.
  • Anomaly detection — a 30-day rolling z-score flags sensor spikes and possible pollution events (|z| ≥ 2.5), drawn directly on the charts.
  • Plain-language narratives — every site gets a generated assessment naming exactly which rules fired and the numbers behind them.

Sites are ranked worst-first into a watch list. On the live build the engine surfaced a consistent signal: urban rivers running 1.3–2.7 °C warmer than the same period last year, with Brandywine Creek near Wilmington topping the watch list on combined warming (+1.32 °C YoY), dissolved-oxygen decline (−0.78 mg/L YoY) and turbidity rise (+12.9 FNU YoY).

The output is a single static HTML file with inline SVG charts — no JavaScript, no server, no dependencies — hosted free on GitHub Pages.

What's next for aqua-signal

  • More cities (the engine is data-driven; adding a USGS site is one line).
  • Alerting: email/RSS when a site crosses status bands.
  • Biological indicators (the EU Water Framework Directive ladder I'm inspired by is ultimately biological) once a comparable open US dataset is found.

Built with

python · usgs-nwis-api · github-pages · svg · unittest · zero-runtime-dependencies

Built With

Share this project:

Updates

Submission history