2024 – now

Lead front-end

Angular, OpenLayers, RxJS, SignalR

Unified Dispatching System: a live map for 112, 101, 102, 103 and 104

Context

A nationwide platform for 112, fire (101), police (102), ambulance (103) and gas emergency (104) services. Operators manage incidents, track vehicles, coordinate brigades and monitor statuses.

The problem

Dispatchers need to see where every vehicle is right now. Location updates arrive over sockets at high frequency, alongside a steady stream of event notifications. Rendering every update naively freezes the map and floods the UI.

Constraints

Government users on ordinary hardware; the map must stay responsive during peak incidents; no room for missed notifications.

What I did

Built the live map on OpenLayers. Modelled the socket feed as RxJS streams with buffering and throttling so the map redraws at a sustainable rate without dropping the latest position. Built SignalR-driven notification and live-update components with PrimeNG and Angular Material for consistency and accessibility.

SignalR socket
RxJS bufferTime 250 ms
latest per vehicle
OpenLayers vector layer
Position feed, socket to screen. Notifications take a parallel path into the PrimeNG toast queue.

What happened

The map redraws at a steady rate no matter how many vehicles report at once, so it stays usable through the peaks that used to freeze it. Dispatchers stopped clicking on a vehicle and getting the wrong one. The position stream is now the only place the map learns about vehicles, which made it easy to record a feed and replay it for testing.