Skip to content
← projects / Pyro Radar

Pyro Radar

Real-time wildfire tracking worldwide, built from six satellite sources aggregated onto a single vector map.

Overview
year
2026
role
Full-stack design and development
status
Live
front
Vue 3, MapLibre GL
back
AdonisJS, SSE
data
PostGIS, PostgreSQL
Pyro Radar — full-screen map view
Pyro Radar — overview

Context

The idea

Fire detection data is public, free and abundant — NASA, ESA, NOAA and JAXA broadcast it continuously. It also comes in heterogeneous formats, at different cadences, with geographic coverage that only partly overlaps.

Pyro Radar merges those feeds into a single worldwide map, refreshed continuously.

The sources

SourceCoverageCadence
NASA FIRMS (VIIRS / MODIS)WorldwideOrbital passes
GOES-18 / 19Americas10 min
Meteosat MTG (LSA SAF)Europe / Africa10 min
Himawari-9Asia / Oceania10 min
Sentinel-3 SLSTR (Copernicus)WorldwideOrbital passes

Geostationary satellites bring the frequency, polar orbits bring the resolution.

The technical work

Ingestion. CSV for FIRMS, NetCDF for GOES, HDF5 for MTG: one ingester per source normalises into a shared schema of geolocated detections.

Burned areas. Point detections become estimated polygons directly in PostGIS, in batches — loading every zone at once was taking Postgres down.

Wind. GFS data is only decoded around active fires. The worldwide grid would have weighed several gigabytes per cycle for information that only matters over a few dozen square kilometres.

Real time. Server-Sent Events: no polling, and no bidirectional WebSocket where a one-way stream is enough.

Mapping. MapLibre GL, OpenFreeMap basemap and Esri satellite view — no API key, so no quota and no surprise bill.

What I took away

Adding a coverage area is one line of SQL. That design constraint, set early, kept the geographic logic from scattering across the application code.

Architecture

01 · Sources

Six satellite feeds aggregated — NASA FIRMS, GOES-18/19, Meteosat MTG, Himawari-9, Sentinel-3.

02 · Ingestion

One ingester per source (CSV, NetCDF, HDF5) normalises into a shared schema of geolocated detections.

03 · Storage

Burned areas estimated as polygons directly in PostGIS, in batches.

04 · Rendering

MapLibre GL vector tiles, real-time delivery over Server-Sent Events.

Interface

Hotspots — individual detections with confidence and per-click detail.
30-day history — cumulative fire count and estimated burned area.

Next project

Estimap

Continue