NADMO operations dashboard for FloodSense Ghana - real-time flood risk monitoring across Greater Accra
# FloodSense Ghana — NADMO Operations Dashboard
An operational dashboard for NADMO and partner institutions to monitor flood risk
across FloodSense-covered communities in Greater Accra. Built for use during an
active flood event: the map is the primary view, status is readable at a glance,
and the "Respond" tab answers *what do we do right now*.
This is a decision-support tool for responders, not a public-facing app.
---
## ⚠️ Everything on screen is demo data
No backend is connected. Every water level, alert, delivery receipt and flood
event is **generated** — plausible in shape, but not real. The header carries a
permanent `DEMO DATA` badge while this is the case.
Data that is a placeholder rather than a measurement is marked inline:
| Marked | Meaning |
| --- | --- |
| `EST.` | Household counts are working estimates, not verified survey or census counts |
| `UNCONFIRMED` | Shelter / assembly point locations are placeholders pending NADMO confirmation |
| `PLACEHOLDER` | NADMO district phone numbers are deliberately non-dialable stand-ins |
Phone numbers are **not** rendered as `tel:` links while they are placeholders —
a one-tap call to a stranger during an incident is not an acceptable bug. Enable
the link in `src/components/MitigationPanel.tsx` once the real district directory
is in place.
The **flood event log** deliberately includes false alarms and one warning that
went out too late. A prediction track record with no failures in it cannot be
audited, and NADMO will want to see the misses before trusting an automated
warning.
## Running it
```bash
npm install
npm run dev #
localhost
npm run build # production bundle into dist/
```
Node 20+ required.
## Swapping in the real backend
Every component talks to `api` from `src/api/client.ts` and
nothing imports the mock modules directly. Two implementations satisfy the same
`FloodSenseApi` interface:
- `mockApi` — generated demo data (default)
- `httpApi` — plain REST calls
Point …