Real-Time South African load-shedding monitor built with Kafka,Node.js,and React
# SA Load-Shedding Real-Time Monitor
A real-time streaming dashboard that tracks South African load-shedding status, built with Apache Kafka, Node.js, WebSockets, and React — fully deployed to the cloud.
**Live Dashboard:** dashboard-production-3c67.up.railway.app
**Repository:**
github.com
**Author:** Nonhlanhla Mbali Ntuli — GitHub · LinkedIn
---
## What this project does
This dashboard simulates the kind of real-time monitoring system a utility company, municipality, or civic-tech platform might use to track load-shedding across South Africa. It combines:
- **A real external data source** — the EskomSePush API, which provides live South African load-shedding status.
- **A Kafka-based streaming pipeline** — a producer publishes updates to a Kafka topic, a consumer subscribes and re-broadcasts them over WebSockets, and the React frontend renders changes the instant they happen — no polling.
- **A full dashboard application** with 9 functional views, an interactive live map of South Africa's 9 provinces, and real-time alerts.
- **Full cloud deployment** — every service (Kafka, producer, consumer, backend, dashboard) runs live on Railway, not just locally.
## Features
- **Overview** — national load-shedding stage (real data), live province map, stage history chart, upcoming schedule, recent alerts
- **Live Map** — interactive SVG map of South Africa, click any province for its current stage
- **By Province** — grid view of all 9 provinces with current stage
- **Schedules** — full day's load-shedding schedule
- **Alerts / Notifications** — live feed of stage changes as they stream in
- **Insights** — summary statistics (average stage, highest stage, provinces at Stage 0)
- **History** — chronological log of past stage changes
- **Settings** — account and data source information
- Live clock, notification badge, and profile dropdown
- Toast notifications on every real-time update
## Architecture
```
EskomSePush API …