# ksaikiran2004/tric architecture

> Architecture diagram of the GitHub repository ksaikiran2004/tric, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-21). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ksaikiran2004/tric
- Repository: https://github.com/ksaikiran2004/tric

## Overview

1. **Overall shape**
   This is a locally hosted, Flask-style real-time monitoring system. The repo is split into a Python backend that ingests/derives events and a browser frontend that renders the operator dashboard. The main runtime entrypoints appear to be `app.py`, `run_tric.py`, and `backend/main.py`.

2. **User-facing layer**
   The `frontend/` folder is a server-rendered UI with HTML templates plus vanilla JS/CSS. The JavaScript modules are split by concern: map loading, sensor rendering, alert panels, incident tables, video streaming, and path animation. The frontend is mostly a consumer of live state delivered from the backend via HTTP and WebSockets.

3. **API and realtime transport**
   `backend/api/routes.py` and `backend/api/demo_routes.py` provide HTTP endpoints, while `backend/api/websocket_manager.py` handles push updates. This is the boundary where backend events are exposed to the dashboard, so it is the key integration point between state changes and UI updates.

4. **Core orchestration**
   `backend/orchestrator/alert_orchestrator.py` and `backend/orchestrator/event_manager.py` are the coordination layer. They take incoming telemetry, detections, and confirmations, then decide when something becomes an alert or incident. Architecturally, this is the central “decision bus” between ingestion, tracking, and persistence.

5. **Sensor and telemetry ingestion**
   The repo supports both real and synthetic sensor inputs. `backend/simulation/` generates test nodes and trigger events, which is useful for offline validation; `backend/api` and `backend/surveillance` are the likely live ingress paths for actual telemetry and video-related events. The presence of `data/sensors.json` suggests sensor state/config is also persisted locally.

6. **Video and vision pipeline**
   `backend/surveillance/` handles camera/image capture, and `backend/vision_processor.py` plus `backend/detection/yolo_inference.py` run local object detection with the bundled `yolov8s.pt` model. `backend/detection/detection_parser.py` appears to normalize model output into domain events that the orchestrator can understand.

7. **Tracking and movement reasoning**
   `backend/tracking/` contains the path/direction/intrusion logic. `path_builder.py`, `intrusion_tracker.py`, and `direction_classifier.py` together turn raw detections into trajectories and movement classifications. This is the stage that converts “a detection happened” into “a target is moving along a path.”

8. **Alert confirmation**
   `backend/confirmation/` provides a multi-sensor confirmation step before escalation. `multi_sensor_confirmation.py` and `alert_engine.py` imply the system tries to reduce false positives by requiring corroboration across inputs before the orchestrator logs or broadcasts a higher-confidence alert.

9. **Persistence and audit trail**
   Runtime records are stored under `data/` as JSON snapshots: `active_alerts.json`, `incidents.json`, and `sensors.json`. `backend/database_manager.py`, `backend/logging_system/incident_logger.py`, and `backend/logging_system/log_formatter.py` suggest a lightweight local persistence/auditing layer rather than a separate database service. `backend/utils/file_lock.py` is important here because it indicates concurrent file writes are expected and guarded.

10. **Domain model boundary**
   `backend/models/` defines the shared data shapes for alerts, incidents, paths, and sensors. These model classes sit between the event-processing subsystems and the UI/persistence layers, giving the system a consistent schema for alerts, trajectories, and sensor state.

11. **Geospatial and visualization assets**
   `frontend/geo/border_line.geojson` and the static assets under `frontend/static/assets/` support map-based visualization and sensor icons. The README references offline map rendering and a 3D “holotable” view; in the repository, that visual layer is represented by the map and animation JS modules rather than a separate backend service.

12. **Configuration and utilities**
   `config/settings.py` and `backend/config.py` centralize runtime settings, while `backend/utils/` provides shared helpers for IDs, timestamps, geospatial math, and locking. These are supporting modules that reduce coupling across the ingestion, orchestration, and persistence code.

13. **End-to-end data flow**
   The dominant flow is: sensor/video input or simulation event → parsing/detection → tracking/confirmation → alert orchestration → logging/persistence → WebSocket/HTTP update to the dashboard. The system is therefore event-driven, with the backend acting as the processing core and the frontend acting as a live operator display.

14. **Operational boundary**
   The repository is designed as a self-contained local system with no obvious dependency on external cloud services in the code tree. That makes the main architectural constraint not network integration, but keeping realtime ingestion, file-based persistence, and frontend updates synchronized inside one air-gapped process boundary.

Main entry points: [`frontend/templates/dashboard.html`](https://github.com/ksaikiran2004/tric/blob/main/frontend/templates/dashboard.html) (Dashboard), [`backend/api/websocket_manager.py`](https://github.com/ksaikiran2004/tric/blob/main/backend/api/websocket_manager.py) (WebSocket mgr), [`backend/database_manager.py`](https://github.com/ksaikiran2004/tric/blob/main/backend/database_manager.py) (DB manager), [`backend/orchestrator/alert_orchestrator.py`](https://github.com/ksaikiran2004/tric/blob/main/backend/orchestrator/alert_orchestrator.py) (Alert orchestrator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_group_entry["Entrypoints"]
  node_app_py["app.py<br/>flask entrypoint<br/>[app.py]"]
  node_run_tric_py["run_tric.py<br/>launcher<br/>[run_tric.py]"]
end

subgraph group_group_backend["Backend core"]
  node_backend_main_py["backend/main.py<br/>backend entrypoint<br/>[main.py]"]
  node_api_routes["API routes<br/>http routes<br/>[routes.py]"]
  node_demo_routes["Demo routes<br/>http demo<br/>[demo_routes.py]"]
  node_websocket_mgr["WebSocket mgr<br/>realtime push"]
  node_event_manager["Event manager<br/>coordination bus<br/>[event_manager.py]"]
  node_alert_orchestrator["Alert orchestrator<br/>decision engine"]
  node_alert_engine["Alert engine<br/>confirmation logic<br/>[alert_engine.py]"]
  node_multi_sensor_conf["Multi-sensor confirm<br/>correlation step"]
  node_vision_processor["Vision processor<br/>video analysis"]
  node_yolo_inference["YOLO inference<br/>model inference<br/>[yolo_inference.py]"]
  node_detection_parser["Detection parser<br/>event normalization"]
  node_path_builder["Path builder<br/>trajectory logic<br/>[path_builder.py]"]
  node_intrusion_tracker["Intrusion tracker<br/>tracking"]
  node_direction_classifier["Direction classifier<br/>movement classification"]
  node_db_manager["DB manager<br/>local persistence"]
  node_incident_logger["Incident logger<br/>audit log<br/>[incident_logger.py]"]
  node_simulation_controller["Simulation ctl<br/>synthetic input"]
  node_sensor_generator["Sensor generator<br/>synthetic data"]
  node_sensor_trigger_engine["Trigger engine<br/>simulation logic"]
end

subgraph group_group_frontend["Frontend UI"]
  node_dashboard_html["Dashboard<br/>template<br/>[dashboard.html]"]
  node_index_html["Index<br/>template<br/>[index.html]"]
  node_alert_panel_js["Alert panel<br/>ui module<br/>[alert_panel.js]"]
  node_incident_table_js["Incident table<br/>ui module<br/>[incident_table.js]"]
  node_map_loader_js["Map loader<br/>ui module<br/>[map_loader.js]"]
  node_sensor_renderer_js["Sensor renderer<br/>ui module<br/>[sensor_renderer.js]"]
  node_path_animator_js["Path animator<br/>ui module<br/>[path_animator.js]"]
  node_video_streamer_js["Video streamer<br/>ui module<br/>[video_streamer.js]"]
  node_holotable_js["Holotable<br/>ui module<br/>[holotable.js]"]
end

subgraph group_group_data["State & assets"]
  node_active_alerts_json["Active alerts<br/>json state<br/>[active_alerts.json]"]
  node_incidents_json["Incidents<br/>json state<br/>[incidents.json]"]
  node_sensors_json["Sensors<br/>json state<br/>[sensors.json]"]
  node_border_geojson["Border geo<br/>map asset"]
end

node_app_py -->|"serves"| node_api_routes
node_app_py -->|"renders"| node_dashboard_html
node_run_tric_py -->|"launches"| node_backend_main_py
node_backend_main_py -->|"starts"| node_event_manager
node_api_routes -->|"updates"| node_websocket_mgr
node_demo_routes -.->|"drives"| node_simulation_controller
node_vision_processor -->|"invokes"| node_yolo_inference
node_yolo_inference -->|"emits"| node_detection_parser
node_detection_parser -->|"feeds"| node_path_builder
node_path_builder -->|"classifies"| node_direction_classifier
node_path_builder -->|"tracks"| node_intrusion_tracker
node_intrusion_tracker -->|"correlates"| node_multi_sensor_conf
node_multi_sensor_conf -->|"confirms"| node_alert_engine
node_alert_engine -->|"escalates"| node_alert_orchestrator
node_event_manager -->|"dispatches"| node_alert_orchestrator
node_alert_orchestrator -->|"persists"| node_db_manager
node_alert_orchestrator -->|"logs"| node_incident_logger
node_db_manager -->|"writes"| node_active_alerts_json
node_db_manager -->|"writes"| node_incidents_json
node_db_manager -->|"reads"| node_sensors_json
node_incident_logger -->|"appends"| node_incidents_json
node_simulation_controller -->|"creates"| node_sensor_generator
node_sensor_generator -->|"triggers"| node_sensor_trigger_engine
node_sensor_trigger_engine -->|"injects"| node_event_manager
node_api_routes -->|"serves"| node_dashboard_html
node_dashboard_html -->|"loads"| node_map_loader_js
node_dashboard_html -->|"loads"| node_sensor_renderer_js
node_dashboard_html -->|"loads"| node_alert_panel_js
node_dashboard_html -->|"loads"| node_incident_table_js
node_dashboard_html -->|"loads"| node_path_animator_js
node_dashboard_html -->|"loads"| node_video_streamer_js
node_dashboard_html -->|"loads"| node_holotable_js
node_map_loader_js -->|"uses"| node_border_geojson
node_sensor_renderer_js -->|"reads"| node_sensors_json
node_alert_panel_js -->|"reads"| node_active_alerts_json
node_incident_table_js -->|"reads"| node_incidents_json
node_websocket_mgr -->|"pushes"| node_alert_panel_js
node_websocket_mgr -->|"pushes"| node_sensor_renderer_js
node_websocket_mgr -->|"pushes"| node_path_animator_js
node_websocket_mgr -->|"pushes"| node_video_streamer_js

click node_app_py "https://github.com/ksaikiran2004/tric/blob/main/app.py"
click node_run_tric_py "https://github.com/ksaikiran2004/tric/blob/main/run_tric.py"
click node_backend_main_py "https://github.com/ksaikiran2004/tric/blob/main/backend/main.py"
click node_api_routes "https://github.com/ksaikiran2004/tric/blob/main/backend/api/routes.py"
click node_demo_routes "https://github.com/ksaikiran2004/tric/blob/main/backend/api/demo_routes.py"
click node_websocket_mgr "https://github.com/ksaikiran2004/tric/blob/main/backend/api/websocket_manager.py"
click node_event_manager "https://github.com/ksaikiran2004/tric/blob/main/backend/orchestrator/event_manager.py"
click node_alert_orchestrator "https://github.com/ksaikiran2004/tric/blob/main/backend/orchestrator/alert_orchestrator.py"
click node_alert_engine "https://github.com/ksaikiran2004/tric/blob/main/backend/confirmation/alert_engine.py"
click node_multi_sensor_conf "https://github.com/ksaikiran2004/tric/blob/main/backend/confirmation/multi_sensor_confirmation.py"
click node_vision_processor "https://github.com/ksaikiran2004/tric/blob/main/backend/vision_processor.py"
click node_yolo_inference "https://github.com/ksaikiran2004/tric/blob/main/backend/detection/yolo_inference.py"
click node_detection_parser "https://github.com/ksaikiran2004/tric/blob/main/backend/detection/detection_parser.py"
click node_path_builder "https://github.com/ksaikiran2004/tric/blob/main/backend/tracking/path_builder.py"
click node_intrusion_tracker "https://github.com/ksaikiran2004/tric/blob/main/backend/tracking/intrusion_tracker.py"
click node_direction_classifier "https://github.com/ksaikiran2004/tric/blob/main/backend/tracking/direction_classifier.py"
click node_db_manager "https://github.com/ksaikiran2004/tric/blob/main/backend/database_manager.py"
click node_incident_logger "https://github.com/ksaikiran2004/tric/blob/main/backend/logging_system/incident_logger.py"
click node_simulation_controller "https://github.com/ksaikiran2004/tric/blob/main/backend/simulation/simulation_controller.py"
click node_sensor_generator "https://github.com/ksaikiran2004/tric/blob/main/backend/simulation/sensor_generator.py"
click node_sensor_trigger_engine "https://github.com/ksaikiran2004/tric/blob/main/backend/simulation/sensor_trigger_engine.py"
click node_dashboard_html "https://github.com/ksaikiran2004/tric/blob/main/frontend/templates/dashboard.html"
click node_index_html "https://github.com/ksaikiran2004/tric/blob/main/frontend/templates/index.html"
click node_alert_panel_js "https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/alert_panel.js"
click node_incident_table_js "https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/incident_table.js"
click node_map_loader_js "https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/map_loader.js"
click node_sensor_renderer_js "https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/sensor_renderer.js"
click node_path_animator_js "https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/path_animator.js"
click node_video_streamer_js "https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/video_streamer.js"
click node_holotable_js "https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/holotable.js"
click node_active_alerts_json "https://github.com/ksaikiran2004/tric/blob/main/data/active_alerts.json"
click node_incidents_json "https://github.com/ksaikiran2004/tric/blob/main/data/incidents.json"
click node_sensors_json "https://github.com/ksaikiran2004/tric/blob/main/data/sensors.json"
click node_border_geojson "https://github.com/ksaikiran2004/tric/blob/main/frontend/geo/border_line.geojson"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app_py,node_run_tric_py toneBlue
class node_backend_main_py,node_api_routes,node_demo_routes,node_websocket_mgr,node_event_manager,node_alert_orchestrator,node_alert_engine,node_multi_sensor_conf,node_vision_processor,node_yolo_inference,node_detection_parser,node_path_builder,node_intrusion_tracker,node_direction_classifier,node_db_manager,node_incident_logger,node_simulation_controller,node_sensor_generator,node_sensor_trigger_engine toneAmber
class node_dashboard_html,node_index_html,node_alert_panel_js,node_incident_table_js,node_map_loader_js,node_sensor_renderer_js,node_path_animator_js,node_video_streamer_js,node_holotable_js toneMint
class node_active_alerts_json,node_incidents_json,node_sensors_json,node_border_geojson toneRose
```

## Components

### Entrypoints

Process launch points for the local monitoring system.

- [app.py](https://github.com/ksaikiran2004/tric/blob/main/app.py): flask entrypoint · Main Flask-style application bootstrap. · `app.py`
- [run_tric.py](https://github.com/ksaikiran2004/tric/blob/main/run_tric.py): launcher · Alternate runtime launcher for the system. · `run_tric.py`

### Backend core

Event processing, orchestration, detection, tracking, and persistence.

- [backend/main.py](https://github.com/ksaikiran2004/tric/blob/main/backend/main.py): backend entrypoint · Backend process entrypoint and runtime wiring. · `backend/main.py`
- [API routes](https://github.com/ksaikiran2004/tric/blob/main/backend/api/routes.py): http routes · Primary HTTP endpoints for dashboard and system interaction. · `backend/api/routes.py`
- [Demo routes](https://github.com/ksaikiran2004/tric/blob/main/backend/api/demo_routes.py): http demo · Supplementary demo or testing endpoints. · `backend/api/demo_routes.py`
- [WebSocket mgr](https://github.com/ksaikiran2004/tric/blob/main/backend/api/websocket_manager.py): realtime push · Pushes live state updates to the browser frontend. · `backend/api/websocket_manager.py`
- [Event manager](https://github.com/ksaikiran2004/tric/blob/main/backend/orchestrator/event_manager.py): coordination bus · Central event coordination and dispatch. · `backend/orchestrator/event_manager.py`
- [Alert orchestrator](https://github.com/ksaikiran2004/tric/blob/main/backend/orchestrator/alert_orchestrator.py): decision engine · Turns tracked events into alerts and incidents. · `backend/orchestrator/alert_orchestrator.py`
- [Alert engine](https://github.com/ksaikiran2004/tric/blob/main/backend/confirmation/alert_engine.py): confirmation logic · Escalation logic for alerts based on corroboration. · `backend/confirmation/alert_engine.py`
- [Multi-sensor confirm](https://github.com/ksaikiran2004/tric/blob/main/backend/confirmation/multi_sensor_confirmation.py): correlation step · Requires multiple inputs before confirming an alert. · `backend/confirmation/multi_sensor_confirmation.py`
- [Vision processor](https://github.com/ksaikiran2004/tric/blob/main/backend/vision_processor.py): video analysis · Coordinates camera frames and detection processing. · `backend/vision_processor.py`
- [YOLO inference](https://github.com/ksaikiran2004/tric/blob/main/backend/detection/yolo_inference.py): model inference · Runs local object detection using the bundled model. · `backend/detection/yolo_inference.py`
- [Detection parser](https://github.com/ksaikiran2004/tric/blob/main/backend/detection/detection_parser.py): event normalization · Converts model output into domain events. · `backend/detection/detection_parser.py`
- [Path builder](https://github.com/ksaikiran2004/tric/blob/main/backend/tracking/path_builder.py): trajectory logic · Builds movement paths from detections. · `backend/tracking/path_builder.py`
- [Intrusion tracker](https://github.com/ksaikiran2004/tric/blob/main/backend/tracking/intrusion_tracker.py): tracking · Tracks intrusion state over time. · `backend/tracking/intrusion_tracker.py`
- [Direction classifier](https://github.com/ksaikiran2004/tric/blob/main/backend/tracking/direction_classifier.py): movement classification · Infers movement direction from tracks. · `backend/tracking/direction_classifier.py`
- [DB manager](https://github.com/ksaikiran2004/tric/blob/main/backend/database_manager.py): local persistence · Manages local file-backed runtime state. · `backend/database_manager.py`
- [Incident logger](https://github.com/ksaikiran2004/tric/blob/main/backend/logging_system/incident_logger.py): audit log · Formats and records incident history. · `backend/logging_system/incident_logger.py`
- [Simulation ctl](https://github.com/ksaikiran2004/tric/blob/main/backend/simulation/simulation_controller.py): synthetic input · Drives offline simulation runs. · `backend/simulation/simulation_controller.py`
- [Sensor generator](https://github.com/ksaikiran2004/tric/blob/main/backend/simulation/sensor_generator.py): synthetic data · Creates simulated sensor nodes and events. · `backend/simulation/sensor_generator.py`
- [Trigger engine](https://github.com/ksaikiran2004/tric/blob/main/backend/simulation/sensor_trigger_engine.py): simulation logic · Emits synthetic trigger sequences. · `backend/simulation/sensor_trigger_engine.py`

### Frontend UI

Dashboard templates and browser-side rendering modules.

- [Dashboard](https://github.com/ksaikiran2004/tric/blob/main/frontend/templates/dashboard.html): template · Main operator dashboard template. · `frontend/templates/dashboard.html`
- [Index](https://github.com/ksaikiran2004/tric/blob/main/frontend/templates/index.html): template · Landing or shell template. · `frontend/templates/index.html`
- [Alert panel](https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/alert_panel.js): ui module · Renders active alerts and notifications. · `frontend/static/js/alert_panel.js`
- [Incident table](https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/incident_table.js): ui module · Displays incident records and history. · `frontend/static/js/incident_table.js`
- [Map loader](https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/map_loader.js): ui module · Initializes map and geospatial layers. · `frontend/static/js/map_loader.js`
- [Sensor renderer](https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/sensor_renderer.js): ui module · Draws sensor state on the dashboard. · `frontend/static/js/sensor_renderer.js`
- [Path animator](https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/path_animator.js): ui module · Animates tracked movement paths. · `frontend/static/js/path_animator.js`
- [Video streamer](https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/video_streamer.js): ui module · Handles live video playback in the browser. · `frontend/static/js/video_streamer.js`
- [Holotable](https://github.com/ksaikiran2004/tric/blob/main/frontend/static/js/holotable.js): ui module · Supports alternate 3D-style visualization. · `frontend/static/js/holotable.js`

### State & assets

Local JSON state and visualization assets used by the system.

- [Active alerts](https://github.com/ksaikiran2004/tric/blob/main/data/active_alerts.json): json state · Current alert snapshot. · `data/active_alerts.json`
- [Incidents](https://github.com/ksaikiran2004/tric/blob/main/data/incidents.json): json state · Persisted incident history. · `data/incidents.json`
- [Sensors](https://github.com/ksaikiran2004/tric/blob/main/data/sensors.json): json state · Local sensor registry and state. · `data/sensors.json`
- [Border geo](https://github.com/ksaikiran2004/tric/blob/main/frontend/geo/border_line.geojson): map asset · Geospatial boundary used by the map view. · `frontend/geo/border_line.geojson`

## Connections

- app.py → API routes: serves · Application bootstrap exposes the primary HTTP API.
- app.py → Dashboard: renders · Main app serves the operator dashboard template.
- run_tric.py → backend/main.py: launches · Alternate launcher starts backend runtime.
- backend/main.py → Event manager: starts · Backend runtime initializes event coordination.
- API routes → WebSocket mgr: updates · HTTP actions trigger live push updates.
- Demo routes → Simulation ctl: drives · Demo endpoints can exercise synthetic scenarios.
- Vision processor → YOLO inference: invokes · Frames are passed into the local detector.
- YOLO inference → Detection parser: emits · Model output is normalized into domain events.
- Detection parser → Path builder: feeds · Parsed detections enter movement reasoning.
- Path builder → Direction classifier: classifies · Built paths are classified by direction.
- Path builder → Intrusion tracker: tracks · Trajectory data updates intrusion state.
- Intrusion tracker → Multi-sensor confirm: correlates · Tracking output is checked against other sensors.
- Multi-sensor confirm → Alert engine: confirms · Cross-sensor confirmation raises confidence.
- Alert engine → Alert orchestrator: escalates · Confirmed alerts are handed to orchestration.
- Event manager → Alert orchestrator: dispatches · Central event bus routes telemetry to decision logic.
- Alert orchestrator → DB manager: persists · Alerts and incidents are stored locally.
- Alert orchestrator → Incident logger: logs · Orchestrator records incident audit entries.
- DB manager → Active alerts: writes · Active alert snapshots are file-backed.
- DB manager → Incidents: writes · Incident history is file-backed.
- DB manager → Sensors: reads · Sensor configuration/state is loaded from local JSON.
- Incident logger → Incidents: appends · Logging layer contributes to incident history.
- Simulation ctl → Sensor generator: creates · Simulation controller builds synthetic sensor data.
- Sensor generator → Trigger engine: triggers · Generated sensors feed trigger sequences.
- Trigger engine → Event manager: injects · Synthetic events enter the same coordination path as live data.
- API routes → Dashboard: serves · Routes return the main dashboard UI.
- Dashboard → Map loader: loads · Dashboard includes map initialization code.
- Dashboard → Sensor renderer: loads · Dashboard includes sensor rendering code.
- Dashboard → Alert panel: loads · Dashboard includes alert panel code.
- Dashboard → Incident table: loads · Dashboard includes incident table code.
- Dashboard → Path animator: loads · Dashboard includes path animation code.
- Dashboard → Video streamer: loads · Dashboard includes video playback code.
- Dashboard → Holotable: loads · Dashboard includes alternate visualization code.
- Map loader → Border geo: uses · Map layer uses local geospatial boundary data.
- Sensor renderer → Sensors: reads · Browser UI renders sensor state from backend-provided data.
- Alert panel → Active alerts: reads · Alert panel reflects current alert state.
- Incident table → Incidents: reads · Incident table displays historical incident records.
- WebSocket mgr → Alert panel: pushes · Realtime updates refresh the alert panel.
- WebSocket mgr → Sensor renderer: pushes · Realtime updates refresh sensor visuals.
- WebSocket mgr → Path animator: pushes · Realtime updates refresh path animation.
- WebSocket mgr → Video streamer: pushes · Realtime updates coordinate video playback state.
