How jack-schultz/evacuation-simulation works
Evacuation Simulation lets planners edit and save building layouts, configure hazards and occupants, then run a server-computed evacuation estimate and play its frames while reviewing results. The graph follows the documented editor-to-run workflow and sampled orchestration; the README also documents navigation, congestion and persistence capabilities. The API route implementations and several simulation internals were not sampled, so uncertain wiring among those components is omitted.
Main entry points: simulation_service.py Simulation service · engine.py Simulation engine · api.ts HTTP client · App.tsx Editor application
Components 24
Planning interface
- Editor application
frontend/src/App.tsx - Layout canvas
frontend/src/components/BuildingCanvas/index.tsx - Editor state
frontend/src/hooks/useBuildingEditor.ts - Building persistence
frontend/src/hooks/useBuildingPersistence.ts - Simulation session
frontend/src/hooks/useSimulationSession.ts - Frame playback
frontend/src/simulation/useSimulationPlayback.ts - Controls and results
frontend/src/components/ResultsPanel.tsx - HTTP client
frontend/src/services/api.ts
Backend API
- FastAPI application
backend/app/main.py - Building endpoints
backend/app/api/buildings.py - Simulation endpoints
backend/app/api/simulations.py - Building service
backend/app/services/building_service.py - Simulation service
backend/app/services/simulation_service.py
Simulation domain
- Building layout
backend/app/domain/building/layout.py - Navigation graph
backend/app/simulation/graph.py - Shortest-path routing
backend/app/simulation/routing.py - Simulation engine
backend/app/simulation/engine.py - Timestep movement
backend/app/simulation/step.py - Capacity flow
backend/app/simulation/flow.py - Frames and statistics
backend/app/simulation/results.py
Persistence
- Building records
backend/app/models/building.py - Simulation records
backend/app/models/building.py - SQLite database
backend/app/core/database.py
Other components
- Building planner
Connections 29
- Building planner → Editor application: edits layout
- Editor application → Layout canvas: renders editor
- Layout canvas → Editor state: updates layout
- Editor application → Building persistence: saves building
- Editor application → Simulation session: starts run
- Building persistence → HTTP client: requests buildings
- Simulation session → HTTP client: creates and runs
- Frame playback → Controls and results: supplies playback
- HTTP client → FastAPI application: HTTP requests
- FastAPI application → Building endpoints: dispatches
- FastAPI application → Simulation endpoints: dispatches
- Building endpoints → Building service: handles CRUD
- Simulation endpoints → Simulation service: handles runs
- Building service → Building records: reads and writes
- Simulation service → Building service: loads layout
- Simulation service → Simulation records: reads and writes
- Building records → SQLite database: stored in
- Simulation records → SQLite database: stored in
- Building service → Building layout: validates layout
- Simulation service → Simulation engine: runs model
- Simulation engine → Navigation graph: builds navigation
- Simulation engine → Shortest-path routing: selects routes
- Simulation engine → Timestep movement: advances occupants
- Timestep movement → Capacity flow: uses capacity model
- Simulation engine → Frames and statistics: builds output
- Simulation service → Frames and statistics: persists frames and results
- Simulation service → HTTP client: returns frames and results
- HTTP client → Simulation session: delivers run response
- Simulation session → Frame playback: loads frames