Nigeria Security — the app: live open-data dashboard, community incident reporting, offline mobile PWA, and backend. Built on ACLED/GDELT.
# Nigeria Security — the app
The product: a live web app that turns open conflict data into usable safety information for Nigeria. Dashboard, community incident reporting, an offline mobile app, and the backend that powers them — one Express server.
> This repo is **the app only**. The research report, source catalog, and pitch/methodology ("the startup document") live in a separate project.
## Run
```bash
npm install
npm start # →
localhost
```
| Route | What |
|-------|------|
| `/` | **Dashboard** — state/LGA choropleth, zone & hotspot rankings, national trend, live news signal |
| `/community/` | **Report** — submit an incident, moderated public feed (live) |
| `/mobile-pwa/` | **Mobile** — installable, offline-first PWA |
| `/data-status/` | **Data status** — live source health + provenance of every number |
| `/api/reports`, `/api/moderation/*`, `/api/stats` | Reporting API (Phase 4) |
| `/sms-api/ussd`, `/sms-api/sms` | SMS/USSD service (Phase 3, mock mode) |
| `/api/data/*`, `/api/status` | Read-only data + status |
## Test
```bash
npm test # node --test — 29 tests (server, data API, full report
# lifecycle, the ethnicity-rejection safety rule, SMS + USSD)
```
## Structure
```
server.js Express: serves the frontend + mounts the APIs
index.html the dashboard (app home)
community/ reporting UI
mobile-pwa/ offline PWA
data-status/ live source-health + provenance page
reporting-api/ Phase 4 backend (safety-by-design validation)
sms-service/ Phase 3 backend
data-pipeline/ open-data ingestion (ACLED/GDELT connectors + health probe)
data/ processed data the app serves
shared/schema.js canonical schema + safety-enforcing validation
```
## Data & safety
Built entirely on **open sources** — ACLED (via the UN Humanitarian Data Exchange), GDELT, geoBoundaries — with no access controls bypassed. All counts are of *reported* events and are lower bounds. Safety rule …