All work

Morning Report

An incident console an ops lead can trust at 6 am

Morning ReportPreview
Screenshot of Morning Report on a desktop

Morning Report is a sample brief. We imagined the ops team at a growing Indian SaaS company, running uptime and incidents out of spreadsheets and a busy Slack channel. The team is imaginary. The console isn't: we designed and engineered it, and you can run an incident in the live build below.

A sample brief, a real product. We wrote this brief ourselves. The business is imaginary; the product is not: we designed and engineered it, and you can use it above. We publish results only for work a client has let us verify, so this page shows none.

01

The brief

We imagined the ops team at a growing SaaS company, running the business out of a pile of spreadsheets, a pager app and a Slack channel nobody could scroll back through. Handovers happened in DMs, and the status page was updated when someone remembered.

We designed a single place they could act from, not just look at, and built it.

02

The problem

Ops dashboards are where good intentions go to die: too dense, too slow to change, and trusted by nobody. This one has to stay useful at 6 am, in the middle of an incident, and as the services under it change.

  • Dense information that stays scannable
  • Alerts that mean something
  • Incidents that can only move in legal ways
  • Numbers that always reconcile
03

The approach

We worked out which numbers an on-call lead actually decides with, and designed around those: service health first, error budgets next, everything else a click away. Incidents follow a strict state machine with a timeline, notes and reassignment, and the public status page and postmortem come from the same record.

What would change for a team like this: one screen to open first, a handover that doesn't live in DMs, and a status page that's never out of date.

  • A priority-led information hierarchy
  • Incident lifecycle as an explicit state machine
  • A flexible grid for metrics that don't exist yet
  • A component kit the team's engineers can extend
04

What shipped

  • Service sparklines
  • Incident drawer with a legal state machine, timeline, notes and reassignment
  • Error budgets
  • On-call handover and rotation with overrides
  • Simulate an incident
  • Postmortem download
  • Public status page
  • Monitors, alert rules and escalation policies
  • Maintenance windows
05

Under the surface

How it is built

A Go collector streams service heartbeats over WebSockets into TimescaleDB; the React/TypeScript console renders incident state machines, and Grafana handles the long-tail dashboards ops already trusts.

  • Go collector built for a steady flood of heartbeats on a small node
  • Incident lifecycle as an explicit state machine
  • WebSocket fan-out with backpressure handling
  • Timescale continuous aggregates for uptime bars

Considered and turned down

Node for the collector. Go's goroutines and memory profile won the ingestion path.

Stack

ReactTypeScriptGoTimescaleDBWebSocketsGrafanaGCP
06

The mechanism, working

The part of Morning Report that was hardest to get right, as a small model you can operate.

lab/incident-fsmOpen in the Lab

Incident state machine

Open → acknowledged → mitigated → resolved, with every transition audited and every timer explicit.

What are you building?

Pick one and we will show you the closest thing we have already built. Or go straight to the brief: a person replies within one working day, with an honest view on scope, time and cost.

studio@yakooha.com+91 81042 13809WhatsApp Monday to SaturdayAndheri, Mumbai10:00 to 19:00 IST, Monday to Friday
What are you building?

Ask an AI about Yakooha

Opens with a question already written. Check us somewhere we don’t control.