Project Info
Inspiration
The first minutes of a fire determine whether it is contained or becomes a major disaster. Incident commanders must make rapid decisions about where to deploy resources and issue evacuation warnings. Although there is more data than ever to assist with this decision-making, there is presently no centralized platform that combines predictive modeling of fire spread, weather and topographical data, and historical maps of previous fires and constructed firebreaks, making it difficult for incident commanders to take advantage of the technology’s benefits.
What it does
Our project synthesizes relevant information for an incident commander during the first minutes of a fire so they can seamlessly use mapping and modeling tools to their full extent. We provide concise, up-to-date alerts about the spread of the fire and visualizations that the user can use to understand and validate the natural language alerts.
How we built it
We gathered data from numerous datasets related to factors relevant to incident commander decision-making in the early stages of a fire. The data included: (1) topography, (2) population density, (3) real-time wind data, (4) historical fire data, (5) firebreak locations. We also retrieved a model of wildfire spread to predict the fire’s trajectory so necessary evacuation notifications can be sent out before the fire spreads closer to those living in nearby population centers. We generated maps of all of these factors, and then leveraged a VLM to synthesize the maps and provide useful recommendations to the incident commander as well as relevant visualizations. To make the process as seamless as possible for the user, we chose a progressive web app interface so the information can be accessible from an cell phone.
Challenges we ran into
Our first challenge was settling on a project. On Friday night we brainstormed ideas, which ranged from campus bike rental services to identification of high-risk power lines in the event of a disaster. It was only after perusing the sustainability track challenges that we settled on our idea, which was solidified on Saturday after speaking to Jake Hess, the challenge mentor, who provided us with more information about the problem this project would help firefighters overcome. From here, some challenges we ran into were finding viable datasets for all of our dimensions of interest. Either datasets were too coarse or too granular, or the APIs were simply frustrating to deal with. We struggled in particular with our model of wildfire spread; simply finding a wildfire simulator that was accessible and extendable was extremely difficult, primarily due to dataset incompatibility. And because we gathered data from different sources, another challenge was merging the data formats into a common mapping space that we could use for inference and visualization. Our next biggest hurdle was conceptualizing how to create meaningful natural language analysis and advice for firefighters without risking providing false information. To overcome this, we provided an AI model with raw numerical data in addition to qualitative charts of each of our dimensions in order to gather both quantitative and qualitative descriptions.
Accomplishments we're proud of
This being our first hackathon, we ran into many challenges. However, in these challenges we also were able to grow our technical skills. From dealing with geospatial data embedded into an interactive webapp to aggregating all of our datasets to predict wildfire spread, our data analysis skills are something that we are all proud to say we are stronger at. What was at first an ambitious idea—to build a model predicting wildfire spread—became easier as we broke the problem down into smaller, digestible parts. We also navigated together through using Git for a highly collaborative project, and were able to successfully delegate tasks from UI/UX, implementation of a wildfire prediction API, and the processing and visualization of our datasets all at once. We are proud of our collective commitment to providing mutual assistance to each other and always making sure no one was stuck on a task for too long.
What we learned
We learned that a product is only as strong the need it addresses, and it is vital to talk to our target users to better understand the pain points more precisely. Our pivotal moment was when we talked to Jake Hess, who served at CAL FIRE as the Assistant Region Chief of Northern California after serving for 29 years. He clearly explained the gap between the large amounts of data that exist in disparate locations and the time constraints firefighters face during a real-world fire situation, and he outlined what kinds of alerts would be most helpful to firefighters in the moment.
What's next
We are so excited to announce we will be signing with a production company to create our first album called Mr. AI. You can get a sneak peek of our first single (and title song!) here: https://suno.com/s/2qN4DSnG3HOiFQGk
TreeHacks 2026 - Wildfire Analysis & Visualization Platform
A comprehensive wildfire analysis platform combining real-time data visualization, population risk assessment, and an AI-powered alert system for wildfire incident commanders.
🔥 Project Overview
This project consists of two main components:
- Data Analysis & Visualization - Python-based geospatial analysis generating wildfire risk visualizations
- Alert Hub Web App - Next.js application with swipe-based task management for incident response
Run the Wildfire Sim Platform page
The simulator page now lives inside this app at:
http://localhost:3000/wildfire-sim-platformhttp://localhost:3000/simulator(legacy route)
Start both services from treehacks-2026-wildfires:
# Terminal 1: simulation API
./simulation/run_api.sh
# Terminal 2: Next.js app
npm run dev
If you want to customize backend settings, copy:
cp simulation/backend/.env.example simulation/backend/.env
📁 Project Structure
treehacks-2026-wildfires/
├── app/ # Next.js web application
│ ├── components/ # React components
│ ├── globals.css # Global styles with notification animations
│ ├── layout.tsx # Root layout
│ └── page.tsx # Main page with Alert Hub & swipe functionality
├── data/
│ ├── input/ # Input data files
│ │ ├── tl_2020_06_bg.* # Census shapefiles (California block groups)
│ │ ├── USGS_13_n38w123.tif # Digital Elevation Model (DEM)
│ │ ├── 2025_Gaz_place_national.txt # US Gazetteer (cities)
│ │ ├── fire24_1.gdb.zip # Historic fire perimeters (optional)
│ │ └── CALFIRE_FuelReductionProjects.gdb.zip # Fuel reduction zones (optional)
│ └── output/ # Generated visualizations and data
│ ├── 1_topography.png
│ ├── 2_population_density.png
│ ├── 3_historic_fires.png (if data available)
│ ├── 4_fuel_reduction_zones.png (if data available)
│ ├── 5_wind_vectors.png
│ └── aggregated_wildfire_data.csv
├── docs/ # Documentation files
│ ├── APP.md # Web app documentation
│ ├── DATA_SETUP.md # Data setup guide
│ ├── INSTALL.md # Installation instructions
│ ├── NOTIFICATION_SYSTEM.md # Swipe notification system guide
│ ├── PROJECT_SUMMARY.md # Project overview
│ └── SETUP_GUIDE.md # Component setup
├── scripts/
│ └── generate_visualizations.py # Main data processing script
├── public/ # Static assets
├── package.json # Node.js dependencies
└── README.md # This file
🚀 Quick Start
Prerequisites
- Node.js 18+ (for web app)
- Python 3.12+ with conda/miniconda (for data analysis)
- Census API Key (Get one here)
1. Web Application Setup
# Install dependencies
npm install --legacy-peer-deps
# Start development server
npm run dev
Visit http://localhost:3000 to see the Alert Hub with swipe-based notification management.
Live alerts: The Alert Hub can generate alerts from data/output/ (CSV + optional images) using the Gemini API. Copy .env.local.example to .env.local and set GEMINI_API_KEY (get a key from Google AI Studio). Without it, the app shows fallback alerts.
2. Data Analysis Setup
# Install Python dependencies (using conda)
conda install -y pandas geopandas numpy matplotlib rasterio pyogrio shapely requests -c conda-forge
# Run visualization script
python scripts/generate_visualizations.py
Outputs:
- 3-5 PNG visualizations in
data/output/ - 1 CSV dataframe with aggregated features
📊 Features
Web Application
- Swipe-Based Task Management
- Swipe ← left: Acknowledge & snooze (5 min)
- Swipe → right: Mark in progress
- Swipe →→ right again: Complete & resolve
- Live Alert Hub – AI-generated alerts from
data/output(Gemini) or fallback; swipe to acknowledge/complete - Live ArcGIS Map Integration
- Persistent State (localStorage)
Data Analysis
- Topography Visualization - Elevation heatmap with hillshade
- Population Density - Logarithmic scale human footprint
- Historic Fires - Fire perimeter overlays (optional)
- Fuel Reduction Zones - CAL FIRE treatment areas (optional)
- Wind Vectors - Real-time wind speed/direction from Open-Meteo API
- Aggregated CSV - Gridded dataframe (50×50) with all features
🗂️ Data Sources
| Data Type | Source | Status | Size |
|---|---|---|---|
| Census Population | US Census API | ✅ Auto-fetched | ~2.5MB |
| Block Group Shapes | TIGER/Line Shapefiles | ✅ Included | ~84MB |
| Elevation (DEM) | USGS National Map | ✅ Included | ~223MB |
| US Cities | Census Gazetteer | ✅ Included | ~3.3MB |
| Historic Fires | CAL FIRE GIS | ⚠️ Optional | TBD |
| Fuel Reduction | CAL FIRE GIS | ⚠️ Optional | TBD |
| Wind Data | Open-Meteo API | ✅ Auto-fetched | Real-time |
Adding Optional Data
To enable historic fire and fuel reduction visualizations:
- Download from California Open Data Portal
- Search for "fire perimeters" →
fire24_1.gdb.zip - Search for "fuel reduction" →
CALFIRE_FuelReductionProjects.gdb.zip
- Search for "fire perimeters" →
- Place
.gdb.zipfiles indata/input/ - Re-run:
python scripts/generate_visualizations.py
⚙️ Configuration
Zoom Region (scripts/generate_visualizations.py)
ZOOM_CONFIG = {
'min_lat': 37.20, # Adjust for your region
'max_lat': 37.40,
'min_lon': -122.40,
'max_lon': -122.20
}
Census API Key
Replace in scripts/generate_visualizations.py:
API_KEY = "your_census_api_key_here"
🛠️ Development
Web App Commands
npm run dev # Start dev server (port 3000)
npm run build # Build for production
npm run start # Start production server
Data Analysis
python scripts/generate_visualizations.py # Generate all visualizations
Runtime: ~1-2 minutes (Census API + processing)
📚 Documentation
Quick access to all documentation:
- README.md ← You are here - Main project documentation
- QUICK_REFERENCE.md - Quick command reference & file locations
- FILE_ORGANIZATION.md - Before/after file structure
- INSTALL.md - Detailed installation guide
- DATA_SETUP.md - Data acquisition & setup
- NOTIFICATION_SYSTEM.md - Swipe gesture documentation
- APP.md - Web application features
- PROJECT_SUMMARY.md - Project overview
🎯 Use Cases
- Incident Command - Real-time alert prioritization for fire crews
- Risk Assessment - Population density + terrain + fire history analysis
- Resource Planning - Identify high-risk areas needing fuel reduction
- Decision Support - Wind-informed evacuation routing
- Historical Analysis - Pattern matching with past fire behavior
🤝 Contributing
Built for TreeHacks 2026. Contributions welcome!
📖 References
Filippi, J.-B., Baggio, R., Paugam, R., Bosseur, F., Leblanc, A., & Alonso-Pinar, A. (2025). ForeFire: A Modular, Scriptable C++ Simulation Engine and Library for Wildland-Fire Spread. Journal of Open Source Software, 10(116), 8680. https://doi.org/10.21105/joss.08680
🙏 Acknowledgments
Special thanks to Jake Hess from CAL FIRE for providing valuable guidance and data access.
📄 License
MIT License
🔗 Links
- Census API: https://www.census.gov/data/developers/data-sets.html
- TIGER/Line Shapefiles: https://www.census.gov/geographies/mapping-files/time-series/geo/tiger-line-file.html
- USGS National Map: https://apps.nationalmap.gov/downloader/
- CAL FIRE Open Data: https://gis.data.ca.gov/
- CAL FIRE Fire Perimeters: https://www.fire.ca.gov/what-we-do/fire-resource-assessment-program/fire-perimeters
- ArcGIS Live Fire Map: https://www.arcgis.com/home/item.html?id=6338b78c173c472495c02a7a93dec477
- Open-Meteo API: https://open-meteo.com/
TreeHacks 2026 | Built with Ember Watch for wildfire response teams
Analysis
View
Metric
- 15
- 8
- 7
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- JavaScriptIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Google GeminiClaimed
8 of 9 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- CursorCommits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
317 KB
Source files
53
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
ojas-sanghi/treehacks-2026-wildfires
79 files · 17.4 MB · @ 7b05bf6
Structure
Interface
32 files · 41%Screens, components and styles rendered to the user.
API & routing
6 files · 8%Request entry points: routes, handlers and controllers.
Application logic
10 files · 13%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript39%
- Python27%
- XML18%
- Markdown11%
- CSS3%
- JavaScript1%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 23- @google/genai
- clsx
- date-fns
- framer-motion
- leaflet
- lucide-react
- maplibre-gl
- next
- react
- react-dom
- react-leaflet
- react-map-gl
- recharts
- +10 more
pyproject.toml
pypi · 13- fastapi
- geojson-pydantic
- geopandas
- netcdf4
- pydantic
- pyproj
- python-dotenv
- python-multipart
- rasterio
- requests
- shapely
- uvicorn[standard]
- xarray
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.