About
What this is
An unofficial, open-source, single-page mirror of oaq.notf.in. Same data, rendered as a plain-text leaderboard: Worst 50, Best 50, and every city's full station list as collapsible sections.
Built for humans who want a fast page and for AI agents who want a machine-readable one. Every station has HTML, JSON, and Markdown variants.
Why
oaq.notf.in is a great data broker, but its UI is a client-rendered SPA — empty HTML shell, 1.3 MB JS bundle, zero server-rendered content. Search engines and LLM crawlers see a blank page. This mirror is the opposite: server-rendered HTML, ~26 KB total page weight, fully indexable.
Stack
- Static HTML generated by a 200-line TypeScript build script. No framework.
- CSS + JS base: Oat by Kailash Nadh — ~8 KB, zero dependencies.
- Hosted on Cloudflare Pages. Refresh cron on Cloudflare Workers. Snapshot cache in R2. Free tier.
Acknowledgements
- Data — oaq.notf.in, the Open Air Quality data broker.
- Upstream sources — CPCB (Government of India), Airnet (CSTEP), Aurassure.
- UI library — Oat by Kailash Nadh.
- Map tiles — not used. This site is text-only.
Not affiliated
This project is not affiliated with OAQ, Oat, CPCB, CSTEP, or Aurassure. All trademarks belong to their respective owners.
Source code
github.com/urbanmorph/oaq — MIT license.