Project Nomad is a TypeScript React component that provides a comprehensive GUI for fire modeling systems (WISE, FireSTARR, and future engines). It serves as the primary user interface for all modeling in the NWT IntelliFire system and will be the foundation for a national prototype for all agencies and public use.
The system features a map-based interface using MapBox GL, with two deployment modes:
- SAN (Stand Alone Nomad): Self-hosted with included frontend
- ACN (Agency Centric Nomad): Integrated into agency systems
The system supports all major fire management operational needs:
- Initial attack planning
- Long-term fire growth projections
- Real-time situational awareness during active incidents
- Pre-season planning and risk assessment
- Fire behavior analysts at provincial/territorial level
- Local fire management officers
- ICS planning section personnel during incidents
- Research and training applications
- Public users (limited features)
- Packaged as a Progressive Web App (PWA)
- Includes its own MapBox GL host application
- Docker compose deployment option
- Simple file-based authentication
- Uses SpatiaLite for spatial database needs
- Right-click context menu for launching modeling workflows
- Integrates into existing agency systems (e.g., IntelliFire EasyMap3)
- Uses agency authentication systems
- Integrates with agency spatial databases (PostGIS)
- Launched via cross-linking from various entry points
- Frontend: TypeScript React Component
- Map Engine: MapBox GL JS
- Backend API: Node.js/Express/TypeScript
- Spatial Database:
- SAN: SpatiaLite (Spatial SQLite)
- ACN: PostGIS/GeoServer integration
- Model Engines: WISE, FireSTARR (executed via shell scripts)
- PWA Features: Offline capability, installable, push notifications
External JSON-based configuration with Git submodule support:
/configuration/
/generic/ # Default open-source configuration
/nwt/ # NWT-specific configuration (submodule)
/other-agency/ # Other agency configurations
{
"agency": {
"id": "nwt",
"name": "Government of Northwest Territories",
"branding": {
"logo": "/config/nwt/logo.png",
"primaryColor": "#234075"
}
},
"models": {
"available": ["firestarr", "wise"],
"suppress": ["other_model"]
},
"dataSources": {
"weather": {
"suppressDefault": false,
"sources": [
{
"name": "NWT Weather Data API",
"url": ["https://nwt-weather-api.gov.nt.ca"],
"type": "API",
"kind": "REST"
},
{
"name": "NWT Historical Weather Data Archive",
"url": ["https://nwt-archive/geoserver/weather/wfs"],
"type": "OWS",
"kind": "WFS"
}
]
},
"wildfirePoints": {
"suppressDefault": false,
"sources": [
{
"name": "NWT Wildfire Points API",
"url": ["https://nwt-wildfire-api.gov.nt.ca"],
"type": "API",
"kind": "REST"
},
{
"name": "NWT Wildfire Polygon Data WFS",
"url": ["https://nwt-geoserver.gov.nt.ca/geoserver/wildfire/polygon/wfs"],
"type": "OWS",
"kind": "WFS"
}
]
},
"fuelTypes": {
"suppressDefault": false,
"sources": [
{
"name": "NWT Fuel Types WCS",
"url": ["https://nwt-geoserver.gov.nt.ca/geoserver/fueltypes/WCS"],
"type": "OWS",
"kind": "WCS"
}
]
}
},
"roleMapping": {
"fire_manager": "FBAN",
"ops_staff": "Modeler"
},
"exportOptions": {
"allowZipDownload": true,
"allowShareableLink": true,
"allowAgencyStorage": true
}
}A linear wizard interface that collects all necessary inputs:
-
Spatial Input
- Pass geometry via crosslink (point, line, or polygon)
- Draw geometry on map
- Upload geometry file (GeoJSON, Shapefile, KML)
- Manual lat/long entry
-
Temporal Parameters
- Start date and time
- Model duration
-
Model Selection
- Choose engine (WISE, FireSTARR, others)
- Model type (deterministic vs probabilistic)
-
Weather Data
- Automatic determination of forecast vs historical based on temporal inputs
- Selection of weather model via SpotWX API
- Models available based on location and time
-
Review & Execute
- Summary of all inputs
- Options: Back (modify), Start (execute now), Defer (schedule for later)
- Unique model number assigned
- Email and/or web push notification preferences
- Shareable status link generated
Triggered when a model run completes:
-
Summary Display
- Reminder of input parameters
- List of generated outputs
-
Output Interaction
- Eye icon: View output in popup map
- Export icon: Add to export workflow
- Option to add layers to main map
-
Output Types (vary by model and type)
- Fire perimeters at time steps
- Intensity grids
- Ember zones
- Burn probability maps (probabilistic runs)
- Rate of spread data
Context-sensitive export system:
-
Export Selection
- Pre-populated with selected output
- Add additional outputs to bundle
-
Format Selection
- TURF.js supported formats
- GDAL supported formats
-
Delivery Method
- Direct ZIP download
- Shareable link
- Agency storage (ACN mode)
- Admin configurable restrictions
Hierarchy from most to least privileged:
- Admin - Full system configuration access
- FBAN (Fire Behavior Analyst) - All modeling features
- Modeler - Most modeling features
- User - Simple modeling only
- Anon User - No modeling access
- Draft Models: Browser localStorage until executed/scheduled
- Executed Models: Backend database with unique ID
- User Preferences:
- Backend for persistence
- Browser cache during active sessions
- Sync on session end
Required spatial queries include:
- Models within distance of point
- Overlapping fire perimeters
- Models by fire management zone
- Historical model performance analysis
- Multiple geometry drawing tools
- Layer opacity controls
- Measurement tools
- Basemap options: Physical, Streets, Satellite
- Terrain with user-adjustable exaggeration
- Topographic analysis for fire behavior
- MapBox terrain layer for MVP
- Minimum screen size: iPhone 11 Pro (5.8")
- Full wizard interface optimized for mobile
- Touch-optimized map controls
- Home screen installation
- Web push notifications for model completion
- Offline viewing of cached results (future offline modeling planned)
NOMAD_DEPLOYMENT_MODE: "SAN" (default) or "ACN"NOMAD_AGENCY_ID: Agency identifier when in ACN mode
- Reusable across all three workflows
- Linear navigation with forward/backward
- State persisted in localStorage until execution
- Database persistence for incomplete sessions
- "Continue where you left off" functionality
- Dashboard view of all draft models
- Node.js/Express/TypeScript
- Shared between SAN and ACN deployments
- Shell script execution for model engines
- Asynchronous model execution with status tracking
- Custom notification service for completion alerts
- SpotWX API for weather forecast models
- Agency weather stations and archives
- ECCC weather data
- Agency fuel type services (WCS/WFS)
- National DEM data
- Hotspot data (MODIS/VIIRS)
Both deployment modes produce:
- Folder with formatted inputs for FireSTARR/WISE
- CLI command for model execution (backend only, not user-visible)
- Status tracking and notification system
- Visualization of model results
- Export in multiple formats
- Offline model execution capability
- Real-time model progress updates
- GPU-accelerated modeling
- Advanced parameter tuning interface
- Model validation and QA workflows
- Integration with additional fire behavior models
- Enhanced 3D visualization features
- Docker compose configuration
- Bare metal installation
- PWA deployment
- Component integration into existing systems
- API endpoint configuration
- Role mapping to agency authentication
- Custom data source integration
- Support for concurrent model runs
- Model execution time optimization
- Mobile device compatibility
- Cross-agency configuration flexibility
- User role-based feature availability
- Spatial query performance
- Stand up FireSTARR model to determine exact input/output requirements
- Design reusable wizard component architecture
- Implement base PWA structure with MapBox GL
- Create configuration schema and loading system
- Build backend API with model execution pipeline
- Develop notification service
- Implement spatial database layer
- Create mobile-optimized UI components
- Integration testing with agency systems
- Performance optimization for large spatial datasets