01 The problem
During a multi-day event, dispatchers coordinating dozens of chauffeured cars had no single picture of where each car was, who was driving it, whether it was free, and when it would arrive. Everything ran on phone calls.
02 What it does
- Fleet map with GPS tracking units and phone positions; every car stays in the roster even when its GPS is missing.
- Driver view: pick a destination, change it, mark yourself available, waiting, charging or on a break, end the shift.
- Dispatcher view: states with timers, destinations, saved routes and ETA with delay against the first estimate.
- TV kiosk for the dispatch room: eight-digit pairing, read-only access that expires and can be revoked instantly; Full HD, 4K and mobile layouts.
03 Architecture
- 01 FrontendStandalone Next.js app; map renderer shared with ReadyOps as a package
- 02 BackendReadyOps NestJS API is the only backend, login service and GPS receiver
- 03 RealtimeAuthenticated SSE invalidations, five-second checkpoints, polling as fallback
- 04 ConsistencyRow locks, expected versions and partial unique indexes: a car or driver can never be in two active trips
- 05 MapsMapbox GL, routing and collision-free labels at high marker density
04 Stack
Next.jsTypeScriptNestJSPostgreSQLSSEMapbox GLWialon GPSDocker
05 How I worked with AI
Built quickly before a real deadline, so the risky parts were specified first: the state model, who may command which car, and what must never happen concurrently. Those rules live in PostgreSQL constraints and an integration test suite, so agent-written UI code cannot break them.
06 What is verified
- Used in production at NATO Days 2026 with 25 cars and drivers; dispatchers tracked the whole fleet live.
- Running on the server alongside ReadyOps (checked Oct 2026).
- Dedicated integration test suite for dispatch commands and concurrency rules.
07 Honest notes
- The client is not named. Screenshots come from an isolated copy with a fictional demo event.