Decentralized Service Request and Tracking System for Local Government — Node.js, React, PostgreSQL+PostGIS, Africa's Talking SMS/USSD
# LGA Tracker — Decentralized Service Request & Tracking System
A full-stack platform for local government issue reporting, tracking, and resolution. Citizens report water, road, and waste problems; ward officers manage and resolve them; LGA administrators oversee ward performance.
## Features
- **Citizen Portal**: Register, report geo-tagged issues with photos, track ticket status
- **SMS Notifications**: Africa's Talking integration — alerts on submission, status change, and assignment
- **USSD Fallback**: Feature-phone users report via `*XXX#` — no internet required
- **Officer Dashboard**: Ward-filtered ticket queue, status updates, audit trail
- **LGA Admin Dashboard**: Ward performance metrics, resolution rates, interactive map
- **Geo-spatial Routing**: PostGIS ST_DWithin nearby search, ward boundary matching
- **Role-Based Access**: citizen / ward_officer / lga_admin / super_admin
## Stack
| Layer | Technology |
|------------|------------------------------------------|
| Backend | Node.js 20, Express 4, pg (PostgreSQL) |
| Database | PostgreSQL 15 + PostGIS 3.3 |
| Frontend | React 18, React Router 6, Recharts |
| Maps | Leaflet + React-Leaflet |
| SMS/USSD | Africa's Talking Node.js SDK |
| Auth | JWT (jsonwebtoken) + bcryptjs |
| File Upload| AWS S3 via multer-s3 |
| Logging | Winston |
| Containers | Docker + Docker Compose |
## Quick Start
### With Docker
```bash
# 1. Clone the repo
git clone
github.com
cd lga-service-tracker
# 2. Copy and edit environment variables
cp backend/.env.example backend/.env
# Edit backend/.env with your AT_API_KEY, AT_USERNAME, JWT_SECRET, etc.
# 3. Start all services
docker-compose up -d
# Frontend:
localhost
# Backend API:
localhost
# Health check:
local …