Skip to content
Gabriel.
← All work
LiveSelf-initiated · 2026

Ops Dashboard Demo

A real-time operations dashboard for a small coffee roastery — the one screen the owner checks with their morning coffee to see what changed overnight and what needs them today.

Live, public, and read-only — seeded with a fictional roastery's data. A server-side ticker simulates incoming orders and tickets, so the numbers move while you watch. The browser only ever reads from one API route; no database key is exposed client-side.

The problem

A small business owner has all the data — orders, stock, support tickets — scattered across tools they never open. There's no single glanceable view that answers ‘what changed and what needs my attention’ before the coffee's done.

The approach

One live dashboard built around a Morning Briefing strip that reads like a sentence: revenue vs this time yesterday, products under par, support tickets aging past a day. Below it, KPIs with deltas and sparklines, charts, and red attention tables. A simulated event stream inserts orders and tickets every few seconds and the numbers visibly move — the whole thing is public and read-only, no login wall on the proof.

The outcome

An honest, always-on demo: open it and watch live revenue, orders, low-stock alerts, and aging tickets update in real time. Anonymous visitors get a read-only view; no Supabase key ever reaches the browser, and the simulated volume is capped so the demo database never grows without bound.

What it answers in five seconds

The dashboard opens on a Morning Briefing — three or four plain-English lines generated from the live data:

  • Revenue is up 37% vs this time yesterday — $16,177 and climbing.
  • 6 support tickets aging past 24h — oldest is "Bags arrived stale" (73h).
  • 3 products below par — restock Nightshift and Benevolent.

That strip is the whole point: it answers what changed and what needs me before you've read a single chart. Everything below — KPIs with deltas and sparklines, a 14-day revenue line, orders by hour, top products, and red low-stock / aging-ticket tables — is the detail behind those headlines.

How it stays live

Every few seconds the page polls one server route. That route advances a simulated event stream (a new order, occasionally a support ticket) and returns a freshly-computed snapshot, so the KPIs tick up and the briefing rewrites itself while you watch. The insert volume is debounced and capped with a rolling window, so the demo database can't grow forever.

It's deliberately read-only and public — the real version of this gates behind auth, but the portfolio proof shouldn't. All Supabase access happens on the server with the publishable key under row-level security; the browser never touches a database credential.