Real-time engineering metrics over a ClickHouse event stream: team velocity,
deploy frequency, build success rate, and top contributors — visualised with D3.
Every metric can be sliced per repository via the filter in the top bar
(?repo= on every endpoint, parameterized in ClickHouse).
▶ Try the live demo — runs right in your browser, no setup.
| Tier | Tech |
|---|---|
| Frontend | React + Vite, D3.js (grouped bars, area/line charts) |
| API | Python + FastAPI, clickhouse-connect |
| Store | ClickHouse (MergeTree, columnar analytics) |
| Runtime | Docker Compose |
docker compose up --buildThen open:
- Dashboard → http://localhost:5173
- API docs → http://localhost:8000/docs
- ClickHouse HTTP → http://localhost:8123
On first start the API bootstraps the devpulse.events table and seeds ~120
days of sample commits, PRs, builds, and deploys (deterministic, seed=42), so
the dashboard has data immediately.
You need a running ClickHouse. Then:
# API
cd api
pip install -r requirements.txt
export CLICKHOUSE_HOST=localhost
uvicorn app.main:app --reload
# Web (separate terminal) — Vite proxies /api to :8000
cd web
npm install
npm run dev| Route | Description |
|---|---|
GET /api/summary |
commits, deploys, deploy success %, avg build time, active devs |
GET /api/velocity |
commits & PRs merged per week |
GET /api/deploys |
deploys & failures per day |
GET /api/authors |
top contributors by commit count |
A single wide events table (event_type ∈ commit | pr_opened | pr_merged | build | deploy)
ordered by (repo, ts) — the shape ClickHouse is happiest aggregating. See
api/app/db.py for the schema and api/app/analytics.py for the queries.
MIT © Wassim Jebali