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
- cloudflare-pages
- cloudflare-r2
- cloudflare-workers
- ejs
- github-actions
- javascript
- node.js
- npm
- python
- rest-api
Log in or sign up for Devpost to join the conversation.