Skip to content
Back to work
Case study

An ops dashboard that runs on one Lambda

Replaced a suite of disconnected spreadsheets with a single internal tool — load status, driver assignments, and route exceptions in one view, updated in real time.

Grove Logistics2024Illustrative
  • Internal tool
  • Lambda
  • DynamoDB
  • Real-time
  • Operations
By the numbers
Three spreadsheets → one dashboard
Data sources consolidated
Real-time via WebSocket
Update latency
Scales to zero between shifts
Runtime cost
how it's built
Operations platformserverless · ops tool
Ops clientNext.js
API GatewayWS + REST
Lambda
DynamoDBloads / drivers / exceptions
OperationsLive
38In transit
3Exceptions
Load #4821 → GuelphDriver: M. ChenOn time
Load #4822 → HamiltonDriver: R. PatelDelayed
Load #4823 → LondonUnassignedPending
Live board
Route exceptions
Late departureLoad #4822 · 22 minMedium
Reroute requiredLoad #4830 · road closureAction
Driver swapLoad #4811Info
Exceptions
Real-time
Load status updates push to every screen over WebSocket — the board never waits on a refresh.
One view
Replaced three disconnected spreadsheets with a single live board the whole dispatch desk reads from.
Delivery & environmentsCI/CD
Sourcegit push
CIlint · typecheck · test
BuildNext build (static) · CDK synth
DeployS3 + CloudFront · CDK
devstagingprod

The single-page app and the Lambda API deploy from one pipeline through dev → staging → prod, with a manual approval before prod. Because the whole stack is infrastructure-as-code, a new environment for a new depot is one command — not a week of clicking.

01The problem

Grove's dispatch team tracked load status in one spreadsheet, driver assignments in another, and route exceptions in a third. Reconciling the three was a manual task done at shift handover — errors surfaced late, and supervisors had no live view of the floor during a shift.

02The approach

We modelled the domain as a stream of load and driver state changes, landing each event in a DynamoDB table with a time-bucketed sort key. A Lambda-backed WebSocket API pushes updates to the dashboard as they happen. The frontend is a single-page React app that renders the current state of every active load and driver without a page refresh. The whole stack is serverless — it scales to zero between shifts and to the full dispatch team in seconds.

03The outcome

Supervisors now have a live floor view for the duration of a shift. Exceptions surface immediately rather than at handover. The three spreadsheets were retired, and because the runtime is serverless, the tool costs near nothing when the depot is closed.

05Start a project

Let’s write the next system into being

Tell us what you’re building. We’ll reply within two business days with a frank read on scope, shape, and whether we’re the right studio for it.