# shravani01-clg/avighnaaa architecture

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

- Interactive diagram: https://gitdiagram.com/shravani01-clg/avighnaaa
- Repository: https://github.com/shravani01-clg/avighnaaa

## Overview

Avighnaaa is a mine-worker safety monitoring system: simulated or device sensor readings enter the backend, are validated and scored for hazards, anomalies, and falls, then are stored as predictions and alerts for dashboard retrieval. The backend also exposes device, worker, risk, and alert APIs. Separate JavaScript rule-based and Python ML analysis components are present, alongside a sensor simulator and browser frontend. The README provides no capability details; subsystem coverage follows the source index and tree, and unverified AI-service wiring is shown as optional.

Main entry points: [`controllers/sensorController.js`](https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/sensorController.js) (Sensor Intake), [`routes/sensorRoutes.js`](https://github.com/shravani01-clg/avighnaaa/blob/main/routes/sensorRoutes.js) (Sensor Routes), [`config/dataStore.js`](https://github.com/shravani01-clg/avighnaaa/blob/main/config/dataStore.js) (Data Store), [`simulator/index.js`](https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/index.js) (Simulator Runner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Sensor Simulation"]
  node_sim_runner["Simulator Runner<br/>[index.js]"]
  node_sim_generator["Reading Generator<br/>[generator.js]"]
  node_sim_scenarios["Hazard Scenarios<br/>[scenarios.js]"]
  node_sim_config["Simulator Config<br/>[config.js]"]
end

subgraph group_api["Backend API"]
  node_http_server["Express Server<br/>[server.js]"]
  node_sensor_routes["Sensor Routes<br/>[sensorRoutes.js]"]
  node_sensor_controller["Sensor Intake"]
  node_alert_routes["Alert Routes<br/>[alertRoutes.js]"]
  node_alert_controller["Alert Management<br/>[alertController.js]"]
  node_risk_routes["Risk Routes<br/>[riskRoutes.js]"]
  node_risk_controller["Risk Queries<br/>[riskController.js]"]
  node_device_worker_routes["Device and Worker APIs<br/>[deviceRoutes.js]"]
  node_sensor_auth["Device Authentication<br/>[deviceAuth.js]"]
  node_user_auth["User Authentication<br/>[authMiddleware.js]"]
end

subgraph group_analysis["Risk Analysis"]
  node_risk_adapter["Risk Adapter<br/>[riskEngine.js]"]
  node_risk_engine["Rule Risk Engine<br/>[riskEngine.js]"]
  node_fall_detection["Fall Detection<br/>[fallDetection.js]"]
  node_ai_adapter["AI Integration<br/>[aiIntegration.js]"]
end

subgraph group_persistence["Data and Identity"]
  node_datastore[("Data Store<br/>[dataStore.js]")]
  node_supabase["Supabase Client<br/>[supabase.js]"]
end

subgraph group_ml["ML Analysis"]
  node_ai_service["Python AI Service<br/>[server.py]"]
  node_anomaly_model["Anomaly Detector"]
  node_risk_model["ML Risk Predictor<br/>[risk_predictor.py]"]
  node_dataset["Training Data Generator"]
end

node_device_user(("Sensor Device"))
node_dashboard_user(("Dashboard User"))
node_browser["Safety Dashboard<br/>[script.js]"]

node_sim_runner -->|"generates readings"| node_sim_generator
node_sim_runner -->|"runs scenarios"| node_sim_scenarios
node_sim_runner -->|"reads config"| node_sim_config
node_sim_runner -->|"posts readings"| node_http_server
node_device_user -->|"submits readings"| node_sensor_routes
node_http_server -->|"mounts routes"| node_sensor_routes
node_http_server -->|"mounts routes"| node_alert_routes
node_http_server -->|"mounts routes"| node_risk_routes
node_sensor_routes -->|"protects device POST"| node_sensor_auth
node_sensor_routes -->|"protects data GET"| node_user_auth
node_sensor_routes -->|"dispatches requests"| node_sensor_controller
node_alert_routes -->|"protects requests"| node_user_auth
node_alert_routes -->|"dispatches requests"| node_alert_controller
node_risk_routes -->|"protects requests"| node_user_auth
node_risk_routes -->|"dispatches requests"| node_risk_controller
node_sensor_controller -->|"calculates risk"| node_risk_adapter
node_risk_adapter -->|"delegates scoring"| node_risk_engine
node_risk_engine -->|"detects falls"| node_fall_detection
node_sensor_controller -->|"requests analysis"| node_ai_adapter
node_ai_adapter -.->|"requests inference"| node_ai_service
node_ai_service -->|"uses detector"| node_anomaly_model
node_ai_service -->|"uses predictor"| node_risk_model
node_sensor_controller -->|"stores readings and risk"| node_datastore
node_sensor_controller -->|"creates alerts"| node_datastore
node_alert_controller -->|"reads and updates alerts"| node_datastore
node_risk_controller -->|"reads predictions"| node_datastore
node_datastore -->|"uses when available"| node_supabase
node_dashboard_user -.->|"views safety data"| node_browser
node_dataset -.->|"supports training"| node_anomaly_model

click node_sim_runner "https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/index.js"
click node_sim_generator "https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/generator.js"
click node_sim_scenarios "https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/scenarios.js"
click node_sim_config "https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/config.js"
click node_http_server "https://github.com/shravani01-clg/avighnaaa/blob/main/server.js"
click node_sensor_routes "https://github.com/shravani01-clg/avighnaaa/blob/main/routes/sensorRoutes.js"
click node_sensor_controller "https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/sensorController.js"
click node_alert_routes "https://github.com/shravani01-clg/avighnaaa/blob/main/routes/alertRoutes.js"
click node_alert_controller "https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/alertController.js"
click node_risk_routes "https://github.com/shravani01-clg/avighnaaa/blob/main/routes/riskRoutes.js"
click node_risk_controller "https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/riskController.js"
click node_device_worker_routes "https://github.com/shravani01-clg/avighnaaa/blob/main/routes/deviceRoutes.js"
click node_sensor_auth "https://github.com/shravani01-clg/avighnaaa/blob/main/middleware/deviceAuth.js"
click node_user_auth "https://github.com/shravani01-clg/avighnaaa/blob/main/middleware/authMiddleware.js"
click node_risk_adapter "https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/riskEngine.js"
click node_risk_engine "https://github.com/shravani01-clg/avighnaaa/blob/main/risk-module/riskEngine.js"
click node_fall_detection "https://github.com/shravani01-clg/avighnaaa/blob/main/risk-module/fallDetection.js"
click node_ai_adapter "https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/aiIntegration.js"
click node_datastore "https://github.com/shravani01-clg/avighnaaa/blob/main/config/dataStore.js"
click node_supabase "https://github.com/shravani01-clg/avighnaaa/blob/main/config/supabase.js"
click node_browser "https://github.com/shravani01-clg/avighnaaa/blob/main/frontend/script.js"
click node_ai_service "https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/server.py"
click node_anomaly_model "https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/anomaly_detector.py"
click node_risk_model "https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/risk_predictor.py"
click node_dataset "https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/dataset_generator.py"

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_sim_runner,node_sim_generator,node_sim_scenarios,node_sim_config,node_dashboard_user toneBlue
class node_http_server,node_sensor_routes,node_sensor_controller,node_alert_routes,node_alert_controller,node_risk_routes,node_risk_controller,node_device_worker_routes,node_sensor_auth,node_user_auth toneAmber
class node_risk_adapter,node_risk_engine,node_fall_detection,node_ai_adapter toneMint
class node_datastore,node_supabase toneRose
class node_ai_service,node_anomaly_model,node_risk_model,node_dataset,node_device_user toneIndigo
class node_browser toneTeal
```

## Components

### Sensor Simulation

- [Simulator Runner](https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/index.js): `simulator/index.js`
- [Reading Generator](https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/generator.js): `simulator/generator.js`
- [Hazard Scenarios](https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/scenarios.js): `simulator/scenarios.js`
- [Simulator Config](https://github.com/shravani01-clg/avighnaaa/blob/main/simulator/config.js): `simulator/config.js`

### Backend API

- [Express Server](https://github.com/shravani01-clg/avighnaaa/blob/main/server.js): `server.js`
- [Sensor Routes](https://github.com/shravani01-clg/avighnaaa/blob/main/routes/sensorRoutes.js): `routes/sensorRoutes.js`
- [Sensor Intake](https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/sensorController.js): `controllers/sensorController.js`
- [Alert Routes](https://github.com/shravani01-clg/avighnaaa/blob/main/routes/alertRoutes.js): `routes/alertRoutes.js`
- [Alert Management](https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/alertController.js): `controllers/alertController.js`
- [Risk Routes](https://github.com/shravani01-clg/avighnaaa/blob/main/routes/riskRoutes.js): `routes/riskRoutes.js`
- [Risk Queries](https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/riskController.js): `controllers/riskController.js`
- [Device and Worker APIs](https://github.com/shravani01-clg/avighnaaa/blob/main/routes/deviceRoutes.js): `routes/deviceRoutes.js`
- [Device Authentication](https://github.com/shravani01-clg/avighnaaa/blob/main/middleware/deviceAuth.js): `middleware/deviceAuth.js`
- [User Authentication](https://github.com/shravani01-clg/avighnaaa/blob/main/middleware/authMiddleware.js): `middleware/authMiddleware.js`

### Risk Analysis

- [Risk Adapter](https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/riskEngine.js): `controllers/riskEngine.js`
- [Rule Risk Engine](https://github.com/shravani01-clg/avighnaaa/blob/main/risk-module/riskEngine.js): `risk-module/riskEngine.js`
- [Fall Detection](https://github.com/shravani01-clg/avighnaaa/blob/main/risk-module/fallDetection.js): `risk-module/fallDetection.js`
- [AI Integration](https://github.com/shravani01-clg/avighnaaa/blob/main/controllers/aiIntegration.js): `controllers/aiIntegration.js`

### Data and Identity

- [Data Store](https://github.com/shravani01-clg/avighnaaa/blob/main/config/dataStore.js): `config/dataStore.js`
- [Supabase Client](https://github.com/shravani01-clg/avighnaaa/blob/main/config/supabase.js): `config/supabase.js`

### ML Analysis

- [Python AI Service](https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/server.py): `ai-module/server.py`
- [Anomaly Detector](https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/anomaly_detector.py): `ai-module/anomaly_detector.py`
- [ML Risk Predictor](https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/risk_predictor.py): `ai-module/risk_predictor.py`
- [Training Data Generator](https://github.com/shravani01-clg/avighnaaa/blob/main/ai-module/dataset_generator.py): `ai-module/dataset_generator.py`

### Other components

- **Sensor Device**
- **Dashboard User**
- [Safety Dashboard](https://github.com/shravani01-clg/avighnaaa/blob/main/frontend/script.js): `frontend/script.js`

## Connections

- Simulator Runner → Reading Generator: generates readings (evidence: `simulator/index.js`)
- Simulator Runner → Hazard Scenarios: runs scenarios (evidence: `simulator/index.js`)
- Simulator Runner → Simulator Config: reads config (evidence: `simulator/index.js`)
- Simulator Runner → Express Server: posts readings (evidence: `simulator/index.js`)
- Sensor Device → Sensor Routes: submits readings (evidence: `routes/sensorRoutes.js`)
- Express Server → Sensor Routes: mounts routes (evidence: `server.js`)
- Express Server → Alert Routes: mounts routes (evidence: `server.js`)
- Express Server → Risk Routes: mounts routes (evidence: `server.js`)
- Sensor Routes → Device Authentication: protects device POST (evidence: `routes/sensorRoutes.js`)
- Sensor Routes → User Authentication: protects data GET (evidence: `routes/sensorRoutes.js`)
- Sensor Routes → Sensor Intake: dispatches requests (evidence: `routes/sensorRoutes.js`)
- Alert Routes → User Authentication: protects requests (evidence: `routes/alertRoutes.js`)
- Alert Routes → Alert Management: dispatches requests (evidence: `routes/alertRoutes.js`)
- Risk Routes → User Authentication: protects requests (evidence: `routes/riskRoutes.js`)
- Risk Routes → Risk Queries: dispatches requests (evidence: `routes/riskRoutes.js`)
- Sensor Intake → Risk Adapter: calculates risk (evidence: `controllers/sensorController.js`)
- Risk Adapter → Rule Risk Engine: delegates scoring (evidence: `controllers/riskEngine.js`)
- Rule Risk Engine → Fall Detection: detects falls (evidence: `risk-module/riskEngine.js`)
- Sensor Intake → AI Integration: requests analysis (evidence: `controllers/sensorController.js`)
- AI Integration → Python AI Service: requests inference
- Python AI Service → Anomaly Detector: uses detector (evidence: `ai-module/server.py`)
- Python AI Service → ML Risk Predictor: uses predictor (evidence: `ai-module/server.py`)
- Sensor Intake → Data Store: stores readings and risk (evidence: `controllers/sensorController.js`)
- Sensor Intake → Data Store: creates alerts (evidence: `controllers/sensorController.js`)
- Alert Management → Data Store: reads and updates alerts (evidence: `controllers/alertController.js`)
- Risk Queries → Data Store: reads predictions (evidence: `controllers/riskController.js`)
- Data Store → Supabase Client: uses when available (evidence: `config/dataStore.js`)
- Dashboard User → Safety Dashboard: views safety data
- Training Data Generator → Anomaly Detector: supports training
