Inspiration

Federal environmental data exists but is scattered across 50+ agencies — EPA, FEMA, CDC, USGS, Census. A homeowner trying to check if their water is safe has to navigate multiple complex government databases. We wanted to make it as simple as entering a ZIP code.

What it does

ZipCheckup aggregates federal environmental and safety data into a single report for any US ZIP code. It covers 17 safety verticals: water quality, air quality, PFAS contamination, radon risk, lead exposure, flood hazard, wildfire risk, and more — across 42,000+ ZIP codes and 277,000+ pages.

Every ZIP gets a Home Safety Score (0-100, A-F grade) based on weighted data from federal sources.

How we built it

  • Data pipeline: Node.js scripts pull from EPA SDWIS, ECHO, UCMR5, USGS WQP, FEMA NFHL, CDC PLACES, AirNow, and 40+ other federal APIs
  • Renderer: Node.js + EJS generates 283K static pages (~478 pages/sec)
  • Hosting: Cloudflare R2 (storage) + Workers (edge compute) + Pages
  • API: Cloudflare Worker with KV storage, 6 endpoints, no auth required
  • CI/CD: GitHub Actions — 32 workflows, 20+ validation scripts, smoke tests
  • Packages: Published on npm (us-water-quality-data, zipcheckup) and PyPI

Challenges

  • Processing 50+ federal data sources with different formats, update schedules, and coverage gaps
  • Generating 283K pages without blowing up build times (solved with streaming EJS renderer)
  • Scoring methodology — weighting 17 different risk factors into a single meaningful number

What's next

  • Embeddable widget for real estate sites
  • Email alerts when EPA data changes for a ZIP
  • Annual "State of US Tap Water" data report

Built With

Share this project:

Updates