Back to projects

Case Study

Restaurant Operations Dashboard

A near real-time read on how a restaurant is actually running, built on a pipeline that turns raw operational data into the handful of metrics worth watching.

My Role

Built the data pipeline and the dashboard that sits on top of it.

Tech Stack

ClickHouseKafkaDebeziumPostgreSQLReact

What I Did

  • Streamed changes out of the Postgres OLTP database with Debezium CDC, through Kafka and into ClickHouse — so the numbers move on their own rather than waiting for a nightly batch.
  • Landed the stream in ClickHouse as three layers: a Kafka engine table consumes and parses the JSON, a materialized view transforms and inserts on trigger, and a ReplacingMergeTree holds the deduplicated final table.
  • Built order-status funnel analysis on ClickHouse's windowFunnel, so drop-off between open, awaiting payment and paid is something you can see rather than infer.
  • Developed a near real-time dashboard for serve-time against SLA, revenue by payment method, peak hours and days, and what is actually selling.

Screens

The pipeline — CDC out of Postgres, three layers inside ClickHouse, and windowFunnel behind the funnel view.
Overview — serve time against SLA, revenue by method, peak hours, and what actually sells.
The funnel — open → awaiting payment → paid, with the drop-off at each step called out.