Overview¶
Landscape Decision Theatre is a research tool built to support decision-making around freshwater catchment management in Africa. It allows researchers, policy makers, and stakeholders to visually compare how catchment attributes change across different temporal scenarios (reference, current, and projected future).
Background¶
Freshwater catchments across Africa face growing pressure from climate change, land-use transformation, and population growth. Understanding how these factors interact across time requires tools that can present complex geospatial data in an accessible, interactive format.
Landscape Decision Theatre addresses this by providing:
- Site-based workflow -- define a study area once, then reuse it across map, chart, dial and table views
- Temporal comparison -- side-by-side swipe-based comparison of catchment attributes across scenarios
- Editable targets -- set ideal indicator values and see the ecological recalculation cascade through dependent factors
- Local operation -- designed for use in field settings, workshops, and environments without reliable internet
- Single-binary deployment -- no installation of databases, web servers, or runtime dependencies beyond the binary itself
- Guided tours -- four read-only demo sites that walk new users through the workflow
How It Works¶
The application bundles a Go HTTP server with an embedded React frontend. On startup it:
- Opens a native desktop window (WebView) displaying the landing page
- Loads vector map tiles from an MBTiles file (African countries, rivers, lakes, ecoregions, catchment boundaries, populated places)
- Loads scenario data from GeoPackage (reference, current catchment attributes)
- Provides site management for organising multiple study areas
- All processing happens locally -- no data leaves the user's machine
Technology Stack¶
| Layer | Technology |
|---|---|
| Backend | Go 1.24, Gorilla Mux, go-sqlite3 |
| Frontend | React 18, TypeScript, Chakra UI, Framer Motion, MapLibre GL JS |
| Map Data | MBTiles (vector), MapBox GL Style JSON |
| Scenario Data | GeoPackage |
| Desktop Window | webview_go (WebKit2GTK on Linux, WebView2 on Windows, WKWebView on macOS) |
| Build System | Nix flakes, GitHub Actions |