Why I built it
Most business dashboards refresh overnight, so a payment outage, a fraud spike or a product selling out is only discovered the next morning, after the damage is done. I built this to learn streaming systems by making one that reacts within a second.
What I built
Streams every event
Orders, payments and refunds arrive on Kafka the moment they happen.
Cleans and enriches
Duplicates are removed, currencies converted and customer details added on the fly.
Flags fraud in flight
Each order gets a risk score before it reaches the warehouse.
Fast analytics
ClickHouse answers questions over billions of rows in milliseconds.
Live dashboard
Numbers update on screen through WebSockets, with no refresh button.
Built to recover
Each event is processed exactly once, and the stream can be replayed if something fails.
How it works
- IngestServices publish order events to Kafka topics.
- ProcessA stream processor validates, enriches and scores every event.
- StoreClean events land in ClickHouse, ready to query.
- ServeThe dashboard subscribes and updates within a second.
Built with
- Apache Kafka
- Apache Flink
- ClickHouse
- Python
- WebSockets
- Docker