Offline-first multi-domain analytics & visualization platform for African councils (Zimbabwe) — budget, service delivery, demographics across all government tiers
# Palintir
**Offline-first multi-domain analytics & visualization platform for African councils.**
Built for Zimbabwean government — local → district → provincial → national tiers.
## Features
- **Multi-domain dashboards** — Finance, Service Delivery, Demographics, and a National Overview
- **Offline-first** — IndexedDB caches all datasets; a service worker caches the app shell. Works with zero connectivity.
- **Drill-down navigation** — Click any council in a table to drill into its children. Breadcrumb shows the full hierarchy.
- **Theme** — Dark/light mode, persisted in localStorage.
- **PWA** — Install to home screen; standalone app with custom icons.
## Tech Stack
| Layer | Technology |
|--------------|-------------------------------------|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS v4 |
| Charts | Recharts |
| Offline DB | IndexedDB via `idb` |
| PWA | Web manifest + custom service worker|
## Getting Started
```bash
npm install
npm run dev #
localhost
npm run build # production build
```
## Data Model
```
Council (tier: local | district | provincial | national)
└── FinanceRecord (revenue, expenditure, budget)
└── ServiceRecord (water, roads, health, electricity)
└── DemographicRecord (age, gender, households, literacy)
```
Mock data is generated deterministically at first load and persisted to IndexedDB.
On subsequent visits the app loads entirely from cache — no network needed.
## Roadmap
- [ ] Real data ingestion (CSV / API adapters)
- [ ] Choropleth map with Zimbabwe GeoJSON
- [ ] Data export (PDF reports per council)
- [ ] Multi-user role-based access (council administrators)
- [ ] Background sync queue for field-data collection
## License
MIT