open source · MIT licence

Detect wildfires
before they spread.

AI-powered satellite monitoring for Indonesia. Ingests NASA FIRMS data, runs Isolation Forest anomaly detection across an H3 hexagonal spatial grid, and delivers ranked daily alerts.

$ git clone https://github.com/Itsavirus-com/anomalous-wildfire-hotspots-detection
view live dashboard star on GitHub
MIT
Python 3.10+ · FastAPI · Next.js 14
Nov 2025 — present
21M+
hectares burned annually across Indonesian forests and peatlands
100K+
hotspots detected per year via NASA FIRMS instruments
<1hr
detection latency from capture to alert delivery
01 — data ingestion
NASA FIRMS pull
VIIRS and MODIS data ingested daily into PostgreSQL/PostGIS.
VIIRS · MODIS · PostgreSQL
02 — spatial aggregation
H3 hexagonal grid
Hotspots aggregated into H3 cells for consistent geospatial analysis.
H3 · PostGIS · Pandas
03 — anomaly detection
Isolation Forest ML
Unsupervised model flags abnormal spatial-temporal hotspot patterns.
Scikit-learn · NumPy
04 — alert generation
Ranked daily alerts
Top-K alerts ranked by anomaly severity with coherence checks.
Top-K scoring · validation
Interactive H3 map
Hex grid with anomaly severity visualization.
ML anomaly detection
Isolation Forest model without static thresholds.
Smart alert system
Daily top-K ranking with severity classes.
NASA FIRMS integration
Automated pull from VIIRS and MODIS feeds.
Time-series analysis
Rolling-window hotspot trend and peak analysis.
Pipeline monitoring
Operational status tracking and manual triggers.
How we decide something might be a fire

This system does not confirm wildfires. It identifies conditions that, taken together, are statistically inconsistent with normal behaviour for a given location on a given day. The alert is the output of that comparison.

01 — signal quality
Quality of the signal
Every hotspot record from VIIRS and MODIS carries two quality indicators: a confidence score between 0 and 100, and a fire radiative power value in megawatts. Confidence reflects how certain the instrument is that the reading is a genuine thermal anomaly rather than sensor noise or cloud interference. Radiative power reflects the intensity of heat at the surface. High confidence combined with high radiative power is a strong indicator. Low confidence readings are included in the model but weighted down proportionally.
confidence score 0–100 fire radiative power (MW)
02 — baseline deviation
Today versus recent history
The most diagnostic feature in the model is not the raw hotspot count. It is the ratio of today's count to the rolling 7-day average for that cell. A cell that normally shows 2 hotspots per day and shows 18 today has a ratio of 9. A cell that normally shows 15 and shows 18 has a ratio of 1.2. The absolute numbers are similar. The deviation from baseline is not. This ratio is what separates a genuinely unusual day from a cell that is simply active by nature.
rolling 7-day avg today ÷ baseline ratio
03 — spatial coherence
Why neighbours matter
A single anomalous cell is weak evidence. Before an alert is generated, the system checks whether surrounding H3 cells are also showing elevated anomaly scores. A wildfire spreads across area. A sensor artefact or isolated industrial heat source does not. Spatial clustering across adjacent cells is the final corroborating signal. Flagged cell-days with no supporting signal in their neighbours are filtered out before ranking.
H3 neighbour scoring coherence filter
04 — alert output
What the alert tells you
The output is a ranked signal, not a confirmation. A high-ranked alert means multiple independent indicators — the satellite reading, the deviation from baseline, and the spatial pattern across neighbouring cells — are all pointing in the same direction. The further down the ranked list, the thinner that supporting evidence becomes. Ground verification is still required. The system's job is to tell you where to look first.
ranked signal not a confirmation
backend
FastAPIPostgreSQLPostGISScikit-learnH3 SpatialSQLAlchemyPandasNumPy
frontend
Next.js 14TypeScriptDeck.glMapLibre GLTailwind CSSRechartsSWRZustand
01 — data source
NASA FIRMS Satellite Feed
Near real-time fire detections from VIIRS and MODIS are ingested daily and used as model input features.
02 — spatial indexing
H3 Hexagonal Grid
Coordinates are mapped to H3 cells, enabling uniform neighbor analysis and robust cross-island comparisons.
03 — anomaly detection
Isolation Forest
The model learns baseline behavior and isolates statistically unusual cell-days for further ranking.
04 — alert ranking
Hybrid Scoring + Spatial Coherence
Final ranking combines anomaly score and neighboring-cell coherence to reduce isolated false positives.
11,867
Raw hotspots
FIRMS records ingested from VIIRS and MODIS satellites.
VIIRS · MODIS
7,765
Cell-day aggregates
H3 cells grouped by date for regional analysis.
H3 grid
752
Anomalies detected
Cell-days flagged anomalous by Isolation Forest.
ML model
649
Alerts generated
Daily top-K alerts after coherence validation.
alert engine

Deploy it yourself.

Self-host the full stack. MIT license. Built with NASA FIRMS data for Indonesia and adaptable anywhere.

view live dashboard view on GitHub read the docs