# shivaani30/h2s-worker-safety-monitor architecture

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

- Interactive diagram: https://gitdiagram.com/shivaani30/h2s-worker-safety-monitor
- Repository: https://github.com/shivaani30/h2s-worker-safety-monitor

## Overview

The product receives worker/environment readings, classifies exposure risk, and exposes the latest status for a web dashboard and supervisor alerts. The sampled backend owns prediction, in-memory latest-reading state, and API responses; the README documents the sensor/device and dashboard roles. Model training is represented as a separate supporting stage. The frontend implementation and alert/analytics behavior were not sampled, so their internal wiring is not inferred.

Main entry points: [`backend/main.py`](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py) (Receive sensor data), [`frontend/index.html`](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/frontend/index.html) (Safety dashboard), [`ai/train_model.py`](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/train_model.py) (Train classifier), [`ai/h2s_risk_model.pkl`](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/h2s_risk_model.pkl) (Risk classifier)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingest["Sensor Ingestion"]
  node_backend_receive["Receive sensor data<br/>[main.py]"]
end

subgraph group_risk["Risk Assessment"]
  node_risk_assessment["Predict risk and confidence<br/>[main.py]"]
  node_model["Risk classifier<br/>[h2s_risk_model.pkl]"]
end

subgraph group_api["Backend API"]
  node_latest_state["Latest reading state<br/>[main.py]"]
  node_latest_api["Latest data endpoint<br/>[main.py]"]
end

subgraph group_web["Safety Dashboard"]
  node_dashboard["Safety dashboard<br/>[index.html]"]
end

subgraph group_mlops["Model Preparation"]
  node_training_data["Training dataset"]
  node_train_model["Train classifier<br/>[train_model.py]"]
end

node_sensors(("Environmental sensors"))
node_edge["IoT / edge device"]
node_supervisor(("Safety supervisor"))

node_sensors -->|"provide readings"| node_edge
node_edge -->|"transmit readings"| node_backend_receive
node_backend_receive -->|"passes features"| node_risk_assessment
node_risk_assessment -->|"predicts with"| node_model
node_risk_assessment -->|"returns risk"| node_backend_receive
node_backend_receive -->|"stores result"| node_latest_state
node_latest_api -->|"reads"| node_latest_state
node_dashboard -->|"requests latest"| node_latest_api
node_latest_api -->|"returns readings"| node_dashboard
node_dashboard -->|"displays status"| node_supervisor
node_train_model -->|"loads"| node_training_data
node_train_model -->|"saves trained model"| node_model

click node_backend_receive "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py"
click node_risk_assessment "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py"
click node_model "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/h2s_risk_model.pkl"
click node_latest_state "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py"
click node_latest_api "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py"
click node_dashboard "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/frontend/index.html"
click node_training_data "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/h2s_training_data.csv"
click node_train_model "https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/train_model.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_backend_receive toneBlue
class node_risk_assessment,node_model toneAmber
class node_latest_state,node_latest_api toneMint
class node_dashboard toneRose
class node_training_data,node_train_model,node_sensors,node_edge,node_supervisor toneIndigo
```

## Components

### Sensor Ingestion

- [Receive sensor data](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py): `backend/main.py`

### Risk Assessment

- [Predict risk and confidence](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py): `backend/main.py`
- [Risk classifier](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/h2s_risk_model.pkl): `ai/h2s_risk_model.pkl`

### Backend API

- [Latest reading state](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py): `backend/main.py`
- [Latest data endpoint](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/backend/main.py): `backend/main.py`

### Safety Dashboard

- [Safety dashboard](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/frontend/index.html): `frontend/index.html`

### Model Preparation

- [Training dataset](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/h2s_training_data.csv): `ai/h2s_training_data.csv`
- [Train classifier](https://github.com/shivaani30/h2s-worker-safety-monitor/blob/main/ai/train_model.py): `ai/train_model.py`

### Other components

- **Environmental sensors**
- **IoT / edge device**
- **Safety supervisor**

## Connections

- Environmental sensors → IoT / edge device: provide readings
- IoT / edge device → Receive sensor data: transmit readings
- Receive sensor data → Predict risk and confidence: passes features
- Predict risk and confidence → Risk classifier: predicts with
- Predict risk and confidence → Receive sensor data: returns risk
- Receive sensor data → Latest reading state: stores result
- Latest data endpoint → Latest reading state: reads
- Safety dashboard → Latest data endpoint: requests latest
- Latest data endpoint → Safety dashboard: returns readings
- Safety dashboard → Safety supervisor: displays status
- Train classifier → Training dataset: loads
- Train classifier → Risk classifier: saves trained model
