All projects

Real-time wildfire and smoke detection platform for firefighters, from camera and drone feeds to field alerts.

Client
Midgard, French civil security start-up
Key result
Showcased at the Élysée

Context

Every minute counts in a wildfire. Fire services monitor large forest areas through camera networks and drones, and needed smoke detected and confirmed before it spreads.

What I built

Event-driven microservices: AI detection scores each camera and drone frame and publishes detections to RabbitMQ, a Django service processes those events into alerts with a confidence level and an azimuth, and a NestJS API with role-based access pushes them over WebSocket. The Angular front end, with NgRx state, shows live alerts, a map with each camera's field of view, remote control of the confirmation camera, and a media library of drone imagery.

Result

Operators validate or dismiss a detection in seconds and push it to dispatch. The platform was showcased at the Élysée.

Architecture

  1. An event pipeline on RabbitMQ

    Detections are published to a queue, so the AI keeps scoring frames even when processing slows down, and no detection is lost in between.

  2. Django for event processing

    A dedicated service turns raw detections into alerts with a confidence level and an azimuth, separate from the API that serves operators.

  3. Alerts pushed, never polled

    NestJS pushes each alert over WebSocket, so an operator sees new smoke within seconds of its detection.

  4. One NgRx store for live streams

    Alerts, camera status and the map read from the same state, so every panel stays consistent as events arrive.

  5. Role-based access on every action

    Permissions decide who can validate an alert or take control of a camera, checked on the API and reflected in the interface.

Stack

  • NestJS
  • Django
  • RabbitMQ
  • Java
  • Angular
  • NgRx
  • WebSocket