Pan-Nigeria election-results dashboard β live INEC IReV scraping, historical results 2015-present, ENP/swing/competitiveness analysis. Flask + Next.js.
# π³π¬ Nigeria Election Dashboard
**Live, open electoral data for Nigeria β every race, every cycle, one dashboard.**
**Open the dashboard** Β· **Public API** Β· Report a bug
---
Election results in Nigeria are scattered across PDFs, press conferences, and
paywalled trackers. This project puts them in one free, open place: live INEC
IReV scraping on election day, curated historical results back to 2015, and
the statistical lenses (turnout, swing, competitiveness) that make the numbers
mean something β Presidential down to Area Council, national down to ward.
## Features
- **Live on election day** β a polite, rate-limited scraper follows INEC IReV
and streams updates over SSE
- **Deep history** β INEC-certified results from 2015 to present, importable
from CSV/PDF with full provenance tracking
- **Real analysis** β turnout, margin, ENP (LaaksoβTaagepera), swing, and a
competitiveness index, not just bar charts
- **Maps all the way down** β interactive choropleths from national β state β
LGA β ward
- **Free public API** β every number on the dashboard is one `curl` away.
Free keys, by application β apply here Β·
docs/API.md
- **Open methodology** β sources, formulas, and known gaps documented
on-site
## Public API
The dashboard is free for everyone with no account. The API is free too β
apply for a key (name, email,
what you're building), get approved, and go:
```bash
curl -H "X-API-Key: ned_..." "
elections.innoedgetech.com"
curl -N -H "X-API-Key: ned_..."
elections.innoedgetech.com # SSE during live elections
```
Full endpoint reference: **docs/API.md**.
## Architecture
```
INEC IReV βββΊ [worker: scraper] β
βΌ
CSV/PDF βββββΊ [job: importer] βββΊ [managed Postgres]
β
Browser βββββ [web: Flask API] ββββ€
β
Browser βββββ [static: Next.js] βββ
```
Backend: Python 3.11 + Flask + SQLAlchemy 2 + Alembic.
Frontend: Next.js 14 (App Router) + Tailwind + recharts + SWR + react-leaf β¦