An atlas that maps an everyday Indian city problem — a broken road, a missing library, a failed bus route, a flooded lane — to the public office actually responsible for it. Indian city power is split across municipal corporations, state departments, development authorities, parastatals, police and contractors until no one is answerable; this makes the first accountability question easy to ask: whose jurisdiction is this, and why isn't it the city's? (The full frame: why this atlas exists.)
- 14 city consoles (
/cities/<city>/) — ward, Assembly- and Parliamentary-constituency boundaries, transit, services, land-use and heat layers, with councillor / MLA / MP attribution where public data exists. Ahmedabad is the deepest seed (22 layers + a 22-year budget); also Bengaluru, Bhubaneswar, Chennai, Delhi, Hyderabad, Jaipur, Kanpur, Kochi, Kolkata, Lucknow, Mumbai, Pune, Visakhapatnam. - The reading layer — the argument over the maps:
/why/(explanatory chapters: the air, the roads, the heat…),/findings/(devolution scoreboard + the Ambedkar / Bombay city-state pieces),/devolution/,/about/. Each console also carries a sidebar heat strip naming its hottest wards from the atlas's own Landsat land-surface temperature.
No backend — HTML, map assets and processed GeoJSON are static files.
Live site: https://commonerllp.org/sevent4/
The built atlas is checked into public/, so a fresh clone serves immediately —
no build, no env:
git clone https://github.com/CommonerLLP/sevent4.git
cd sevent4
scripts/serve.sh # static server on :9174 (PORT=8080 to change)Open the first URL it prints (…/index.html). To smoke-test the checked-in
static bundle on mobile, tablet, and desktop viewports with the Playwright CLI:
.venv/bin/python -m sevent4.qa.browser_smokeRebuilding a console (
scripts/start.sh/scripts/build-city.sh <city>) needs the per-city source data underdata/, which is local-only (gitignored) — so it's for maintainers who hold that data, not a fresh clone.
cp -r data/cities/ahmedabad data/cities/<city> # then edit city.yaml
# replace layers/{wards,acs,pcs}.geojson + jurisdiction_crosswalk.json,
# edit layers/layer_manifest.json to match the layers you have, then:
scripts/build-city.sh <city> && scripts/serve.sh <city>Each city lives under data/cities/<city>/ with a city.yaml, a layers/
manifest, and a jurisdiction crosswalk (ward → AC → PC → district), which is
required — the console is a governance tool first, a map second. Full spec +
Python entry points: city data contract. To
rebuild the Ahmedabad seed: data recipes.
sevent4/ Python package (console + layer builders)
scripts/ setup / build / serve
data/cities/ per-city configs + source & layer data (local-only)
public/ the built static atlas (consoles + reading layer + assets)
- Scope — what this repo owns and what belongs upstream
- Roadmap — current public-readiness and evidence gates
- Architecture — root architecture entrypoint
- Why this atlas exists — Part IXA, the fragmentation problem, finance, what the console shows
- Architecture doctrine — constitutional implementation frame, evidence contract, and source/adapter rules
- System architecture — current ports/adapters boundaries, shared-infra rules, and browser smoke gate
- City data contract —
city.yaml, layer manifest, the jurisdiction crosswalk, add-a-city, entry points - Data recipes — rebuilding the Ahmedabad seed
- Reading — Ambedkar, Teltumbde, Lefebvre/Harvey on the right to the city; the 74th Amendment as the promise; the technocratic governance discourse read against
GitHub Pages deploys public/ from main through the
Deploy Pages workflow. The canonical public URL is
https://commonerllp.org/sevent4/.
A scheduled Heat refresh workflow (.github/workflows/heat-refresh.yml,
quarterly + manual dispatch) re-pulls each city's Landsat land-surface-temperature
median, rebuilds the per-city ward_heat_summary.json the strips read, and opens
a PR — it never pushes to main.
- Code (recipes, console generator, page templates) — AGPL-3.0 (see
LICENSE). - Data (geospatial, population, finance) — third-party, redistributed under
each source's own license (OpenStreetMap/ODbL, WorldPop/CC-BY, DataMeet,
OpenCity, Census of India, city/state governments). Not relicensed under
AGPL; per-source credits and terms in
ATTRIBUTION.md.