Wildfire App is a geospatial platform for assessing and simulating wildfire risk over user-defined regions. Users draw a polygon on an interactive map, configure a date range and resolution, and dispatch a simulation run. Results are published as GeoServer raster layers and surfaced as risk metrics, choropleth maps, and model comparisons in the browser.
The application is part of the SpatialHub ecosystem at TH Deggendorf, running at wildfire-app.th-deg.de.
- Interactive Map — Draw and edit region polygons (OpenLayers + MapLibre GL, 2D) with geocoding search and bookmarks
- Model Configurator — Step-by-step wizard to set region, date range, resolution, and optional layers before dispatching a simulation
- Risk Metrics — Weighted risk scoring (Very Low → Very High), affected area (km²), distribution histogram, and trend vs. prior run
- Results Viewer — Per-model results with GeoServer-backed choropleth map and ECharts visualisations
- Model Comparison — Side-by-side risk metrics and distribution charts across any two models
- Workspaces & Groups — Organise models into workspaces; share with Keycloak-managed groups
- Real-time Notifications — SSE push + Asynq background jobs for simulation status and system events
- Admin Dashboard — User, model, feedback, and webservice management with role-based access
- Weather Settings — Configure meteorological inputs for simulation runs
- Feedback System — In-app feedback with image attachments; auto-cleanup of closed items after 7 days
Figures from the accompanying manuscript, Coverage-aware wildfire-danger mapping in Galicia, Spain: workflow and structural sensitivity (in preparation). The example outputs come from a saved run for a 65.5 km² area near Santiago de Compostela on 2 May 2026.
Danger classes 1–5 on a ≈21.7 m grid (WGS 84 / UTM zone 29N), with a panel showing configured-weight coverage (the share of model inputs available in each cell) and a Galicia locator. Only classes 2–4 occur in this output.
Source acquisition, dated selection, harmonisation onto a common grid, scoring and Analytic Hierarchy Process (AHP) aggregation, and delivery through GeoServer to the web viewer.
Galicia, the four overlapping processing tiles used for regional runs, and the example area.
Four representative factor scores (elevation, fuel, infrastructure and FWI), the continuous danger index, the classified map and configured-weight coverage.
How the map changes when single factors are removed, topic weights change by ±20%, class boundaries shift or cells are averaged spatially. Shown for the 14 scenarios with the lowest agreement with the baseline map.
Note
The example run used an earlier version of the scoring rules than the current engine. The danger index is experimental and has not been validated against observed fires.
The full system architecture is documented on the project's MkDocs documentation site (see docs/). Run mkdocs serve to browse it locally.
- Authentication: Frontend → Nginx → Keycloak (OAuth2/OIDC) → Backend validates token → Redis session
- Model Creation: User draws polygon + sets date range → Backend stores model draft
- Simulation Dispatch: Backend → Platform Webservice queues model → Simulation engine runs → results ZIP POSTed back via callback
- Result Processing: Asynq worker unpacks ZIP → publishes GeoServer layer → stores result in PostgreSQL
- Risk Metrics: Backend samples GeoServer raster distribution (up to 2 000 pixels) → computes weighted score + trend vs. prior run
- Visualisation: Frontend renders choropleth map (MapLibre), metric cards, and ECharts distribution chart
Frontend
- React 19 + TypeScript 5.8
- Vite 7 for build tooling
- TailwindCSS 4 + Radix UI components (
@spatialhub/ui) - TanStack Query 5 for server state
- Zustand 5 for client state
- OpenLayers 10 + MapLibre GL JS (2D mapping)
- ECharts 6 for risk distribution charts
- React Router 7 with lazy-loaded routes
Backend
- Go 1.24 + Gin web framework
- GORM with PostgreSQL driver
- Asynq (Redis-backed) for background jobs (
notificationsandresultsqueues) - Server-Sent Events (SSE) for real-time push
- Logrus structured logging
- Keycloak OIDC token validation + admin token provider
Platform Core (included in this repository)
platform-core/auth-service— authentication microserviceplatform-core/webservice— simulation dispatcher and capacity managerinfrastructure/platform— shared Go libraries (server, database, worker, email, security)infrastructure/common— shared domain modelslibs/— shared React component libraries (@spatialhub/ui,auth,forms,i18n)
Infrastructure
- PostgreSQL 17 + PostGIS for spatial and application data
- Keycloak 26 for OAuth2/OIDC identity management
- Redis 7 for sessions, caching, pub/sub, and task queue
- Nginx reverse proxy with SSL termination
- GeoServer for raster layer serving (WMS)
- Docker Compose orchestration
Installation, local development, Makefile targets and environment variables are described in INSTALLATION.md. For a full local setup, run:
make setup.
├── wildfire-app/
│ ├── backend/ # Go API server (Gin, GORM, Asynq)
│ │ ├── cmd/ # Entrypoints: main, migrate, seed
│ │ └── internal/ # Handlers, services, stores, middleware
│ └── frontend/ # React SPA (Vite, TypeScript)
│ └── src/
│ ├── features/ # Feature modules (map, model-dashboard, comparison, …)
│ ├── components/
│ └── configuration/
├── platform-core/ # Platform services (auth-service, webservice, geoserver)
│ ├── auth-service/ # Authentication microservice
│ ├── webservice/ # Simulation dispatcher & capacity manager
│ └── geoserver/ # GeoServer stack
├── infrastructure/ # Shared Go libraries
│ ├── common/ # Shared domain models & contracts
│ └── platform/ # Server, database, worker, email, security
├── libs/ # Shared React component libraries
│ ├── ui/ # @spatialhub/ui components
│ ├── auth/ # Auth library
│ ├── forms/ # Forms library
│ └── i18n/ # Internationalisation
├── nginx/ # Reverse proxy config (dev + prod)
├── Makefile # Developer workflow commands
└── Dockerfile.ci # Multi-stage build (frontend + backend)
Bug reports, feature requests and pull requests are welcome. Please read CONTRIBUTING.md and the Code of Conduct before getting started.
If you use this software, please cite the accompanying paper:
Ortega-Hita, R., Khan, A., Gallego-Llopis, M., Valdes, J., Weber, A., Miranda, R., Papanikolaou, I., and Veiga-López, F.: A Modular, Cloud-Based GIS Platform for Automated Wildfire Risk Index Mapping, Int. Arch. Photogramm. Remote Sens. Spatial Inf. Sci., XLVIII-M-13-2026, 33–40, https://doi.org/10.5194/isprs-archives-XLVIII-M-13-2026-33-2026, 2026.
@article{ortegahita2026wildfire,
author = {Ortega-Hita, Raquel and Khan, Asim and Gallego-Llopis, Mateo and Valdes, Javier and Weber, Andreas and Miranda, Ricardo and Papanikolaou, Ioannis and Veiga-L{\'o}pez, Fernando},
title = {A Modular, Cloud-Based {GIS} Platform for Automated Wildfire Risk Index Mapping},
journal = {The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences},
volume = {XLVIII-M-13-2026},
pages = {33--40},
year = {2026},
doi = {10.5194/isprs-archives-XLVIII-M-13-2026-33-2026}
}Citation metadata is also available in CITATION.cff.
MIT License — Copyright (c) 2026 BigGeoData & Spatial AI, Technische Hochschule Deggendorf. See LICENSE for the full text.
Note
This tool is under active development. The wildfire-danger index is experimental: it is not a calibrated ignition probability, and its outputs have not been validated against observed fires. Features and performance may change in future releases.
Developed by the BigGeoData & Spatial AI research group at Technische Hochschule Deggendorf, in collaboration with Universidade de Vigo, which developed the STORCITO wildfire risk engine.
This project is being developed in the context of the research project STORCITO — Sustainable Transformation Of Rural Communities via Technical, social and Organizational innovations (https://cordis.europa.eu/project/id/101182153). STORCITO is funded by the European Union's Horizon Europe research and innovation programme under grant agreement No. 101182153. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Executive Agency (REA). Neither the European Union nor the granting authority can be held responsible for them.
Open data: Copernicus (Sentinel-2, Sentinel-3, CORINE Land Cover, CLC+ Backbone), MeteoGalicia, IGN/CNIG, MITECO, NASA FIRMS, OpenStreetMap and OpenDataSoft — see ATTRIBUTIONS.md for sources, licences and required attribution statements.




