Back to Projects
Project Pyro

Project Pyro

Browser-based wildfire simulation platform where players fight real Queensland bushfires on satellite maps using a physically-grounded cellular automata fire spread model.

Apr 2026 - Apr 2026 Less than a month

Tech Stack

ReactPythonFastAPILeafletTailwind CSS

Play with fire. Safely.

Project Pyro is a browser-based wildfire simulation and education platform built for teens and young adults to develop environmental literacy and tactical thinking about fire behaviour. Instead of abstract textbooks, users fight actual Queensland bushfires on interactive satellite maps and learn real fire science as they play. Built in 48 hours for the QUT AIML Hackathon 2026, where it won the Best Community Project Award.

Best Community Project Award certificate

Scenario selection screen showing 6 real Queensland bushfire scenarios

The Problem

Wildfire science is abstract. Concepts like fire spread physics, ember spotting, fuel moisture, and suppression tactics are hard to visualise. We wanted to make that understanding tactile and immediate.

Simulation Engine

The core is a client-side implementation of the Alexandridis cellular automata model running on a 1,000×1,000 cell grid at 10m resolution, covering a full 10×10 km area per scenario. Fire spread probability is calculated each tick using wind direction, wind speed, vegetation type, slope, and fuel moisture:

P_burn = P₀ · (1 + P_veg) · (1 + P_den) · P_w · P_s

Where the wind factor P_w = exp(V · [0.045 + 0.131·(cos(θ)−1)]) biases spread 2.5× toward the downwind direction. Six real Queensland bushfires serve as playable scenarios, each locked to authentic satellite imagery and geographic bounds:

Fire simulation with foliage layer showing early-stage spread

Suppression Tools

Players use three firefighting tactics to contain each fire before it consumes the map:

Late-stage fire simulation with control lines placed against an advancing fire front

Visual Rendering

Fire, vegetation, and control overlays are rendered via custom HTML5 Canvas layers on top of React-Leaflet rather than DOM elements — necessary to handle a million-cell grid at 500ms ticks without freezing the browser. Grid state is stored in a ref (not React state) to avoid re-render overhead. A wind-drifted ember particle system (capped at 600 particles) and cell glow effects run alongside the simulation.

Educational Layer

A 10-question randomised quiz covers fire behaviour science, Australian ecology, and survival tactics. A mascot character provides context-aware commentary throughout gameplay — reacting to water drops, wind changes, and victory/defeat — anchoring the educational content without breaking immersion.

Quiz screen with mascot explaining ember spotting

Backend & GIS Pipeline

The Python backend (FastAPI + Rasterio + GeoPandas) processes real ABS shapefiles and SRTM elevation data, transforming between EPSG:3577 and EPSG:4326 to align simulation cells with live satellite tiles. During the hackathon the frontend ran against a MockWebSocket client-side; the backend is wired to take over via a single URL swap in useSimulation.js.

Tech Stack

View All Projects
GitHub Repo Resume AWS Cloud Practitioner