# sihvoyagers2026/h2sproject architecture

> Architecture diagram of the GitHub repository sihvoyagers2026/h2sproject, 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/sihvoyagers2026/h2sproject
- Repository: https://github.com/sihvoyagers2026/h2sproject

## Overview

The tree identifies an Android H₂S workplace-monitoring app with worker scanning and supervisor-record features. No README or runtime source excerpts were provided, so the workflow and subsystem roles are inferred from names; uncertain call and data-flow links are omitted.

Main entry points: [`app/src/main/java/com/example/MainActivity.kt`](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/MainActivity.kt) (Main activity), [`app/src/main/java/com/example/ui/AppNavigation.kt`](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/AppNavigation.kt) (App navigation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App entry"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_navigation["App navigation<br/>[AppNavigation.kt]"]
end

subgraph group_worker["Worker scanning"]
  node_worker_home["Worker home"]
  node_camera["Camera screen"]
  node_sample_dialog["Sample patch dialog"]
  node_sample_provider["Sample patch provider"]
  node_worker_vm["Worker view model<br/>[WorkerViewModel.kt]"]
  node_analysis_screen["Analysis screen"]
  node_result_screen["Result screen"]
end

subgraph group_analysis["Patch analysis"]
  node_image_validator["Image validation<br/>[ImageValidator.kt]"]
  node_patch_detector["Patch detection"]
  node_color_extractor["Color extraction<br/>[ColorExtractor.kt]"]
  node_calibration["Calibration service"]
  node_inference["Inference engine"]
  node_lead_engine["Lead acetate engine"]
  node_prediction_validator["Prediction validation"]
end

subgraph group_records["Safety records"]
  node_safety_repository["Safety repository"]
  node_database[("App database<br/>[AppDatabase.kt]")]
  node_scan_dao["Scan records DAO<br/>[ScanRecordDao.kt]"]
  node_scan_entity["Scan record"]
  node_alert_dao["Supervisor alerts DAO"]
  node_alert_entity["Supervisor alert"]
end

subgraph group_supervisor["Supervisor tools"]
  node_supervisor_pin["Supervisor PIN"]
  node_supervisor_portal["Supervisor portal"]
  node_technical_record["Technical record"]
  node_supervisor_vm["Supervisor view model"]
end

node_worker_actor(("Worker"))
node_supervisor_actor(("Supervisor"))

node_worker_actor -->|"opens app"| node_activity
node_supervisor_actor -->|"opens app"| node_activity
node_activity -->|"starts"| node_navigation

click node_activity "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/MainActivity.kt"
click node_navigation "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/AppNavigation.kt"
click node_worker_home "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerHomeScreen.kt"
click node_camera "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerCameraScreen.kt"
click node_sample_dialog "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/SamplePatchDialog.kt"
click node_sample_provider "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/common/SamplePatchProvider.kt"
click node_worker_vm "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/viewmodel/WorkerViewModel.kt"
click node_analysis_screen "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerAnalysisScreen.kt"
click node_result_screen "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerResultScreen.kt"
click node_image_validator "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/ImageValidator.kt"
click node_patch_detector "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/SensorPatchDetector.kt"
click node_color_extractor "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/ColorExtractor.kt"
click node_calibration "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/CalibrationService.kt"
click node_inference "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ml/MLInferenceEngine.kt"
click node_lead_engine "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ml/ColorimetricLeadAcetateEngine.kt"
click node_prediction_validator "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/PredictionValidator.kt"
click node_safety_repository "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/SafetyRepository.kt"
click node_database "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/AppDatabase.kt"
click node_scan_dao "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/ScanRecordDao.kt"
click node_scan_entity "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/ScanRecordEntity.kt"
click node_alert_dao "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/SupervisorAlertDao.kt"
click node_alert_entity "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/SupervisorAlertEntity.kt"
click node_supervisor_pin "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/supervisor/SupervisorPinDialog.kt"
click node_supervisor_portal "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/supervisor/SupervisorPortalScreen.kt"
click node_technical_record "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/supervisor/TechnicalRecordDialog.kt"
click node_supervisor_vm "https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/viewmodel/SupervisorViewModel.kt"

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_activity,node_navigation toneBlue
class node_worker_home,node_camera,node_sample_dialog,node_sample_provider,node_worker_vm,node_analysis_screen,node_result_screen toneAmber
class node_image_validator,node_patch_detector,node_color_extractor,node_calibration,node_inference,node_lead_engine,node_prediction_validator toneMint
class node_safety_repository,node_database,node_scan_dao,node_scan_entity,node_alert_dao,node_alert_entity,node_worker_actor toneRose
class node_supervisor_pin,node_supervisor_portal,node_technical_record,node_supervisor_vm,node_supervisor_actor toneIndigo
```

## Components

### App entry

- [Main activity](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/MainActivity.kt): `app/src/main/java/com/example/MainActivity.kt`
- [App navigation](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/AppNavigation.kt): `app/src/main/java/com/example/ui/AppNavigation.kt`

### Worker scanning

- [Worker home](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerHomeScreen.kt): `app/src/main/java/com/example/ui/worker/WorkerHomeScreen.kt`
- [Camera screen](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerCameraScreen.kt): `app/src/main/java/com/example/ui/worker/WorkerCameraScreen.kt`
- [Sample patch dialog](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/SamplePatchDialog.kt): `app/src/main/java/com/example/ui/worker/SamplePatchDialog.kt`
- [Sample patch provider](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/common/SamplePatchProvider.kt): `app/src/main/java/com/example/ui/common/SamplePatchProvider.kt`
- [Worker view model](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/viewmodel/WorkerViewModel.kt): `app/src/main/java/com/example/viewmodel/WorkerViewModel.kt`
- [Analysis screen](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerAnalysisScreen.kt): `app/src/main/java/com/example/ui/worker/WorkerAnalysisScreen.kt`
- [Result screen](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/worker/WorkerResultScreen.kt): `app/src/main/java/com/example/ui/worker/WorkerResultScreen.kt`

### Patch analysis

- [Image validation](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/ImageValidator.kt): `app/src/main/java/com/example/cv/ImageValidator.kt`
- [Patch detection](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/SensorPatchDetector.kt): `app/src/main/java/com/example/cv/SensorPatchDetector.kt`
- [Color extraction](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/ColorExtractor.kt): `app/src/main/java/com/example/cv/ColorExtractor.kt`
- [Calibration service](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/CalibrationService.kt): `app/src/main/java/com/example/cv/CalibrationService.kt`
- [Inference engine](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ml/MLInferenceEngine.kt): `app/src/main/java/com/example/ml/MLInferenceEngine.kt`
- [Lead acetate engine](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ml/ColorimetricLeadAcetateEngine.kt): `app/src/main/java/com/example/ml/ColorimetricLeadAcetateEngine.kt`
- [Prediction validation](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/cv/PredictionValidator.kt): `app/src/main/java/com/example/cv/PredictionValidator.kt`

### Safety records

- [Safety repository](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/SafetyRepository.kt): `app/src/main/java/com/example/data/SafetyRepository.kt`
- [App database](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/AppDatabase.kt): `app/src/main/java/com/example/data/AppDatabase.kt`
- [Scan records DAO](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/ScanRecordDao.kt): `app/src/main/java/com/example/data/ScanRecordDao.kt`
- [Scan record](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/ScanRecordEntity.kt): `app/src/main/java/com/example/data/ScanRecordEntity.kt`
- [Supervisor alerts DAO](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/SupervisorAlertDao.kt): `app/src/main/java/com/example/data/SupervisorAlertDao.kt`
- [Supervisor alert](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/data/SupervisorAlertEntity.kt): `app/src/main/java/com/example/data/SupervisorAlertEntity.kt`

### Supervisor tools

- [Supervisor PIN](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/supervisor/SupervisorPinDialog.kt): `app/src/main/java/com/example/ui/supervisor/SupervisorPinDialog.kt`
- [Supervisor portal](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/supervisor/SupervisorPortalScreen.kt): `app/src/main/java/com/example/ui/supervisor/SupervisorPortalScreen.kt`
- [Technical record](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/ui/supervisor/TechnicalRecordDialog.kt): `app/src/main/java/com/example/ui/supervisor/TechnicalRecordDialog.kt`
- [Supervisor view model](https://github.com/sihvoyagers2026/h2sproject/blob/main/app/src/main/java/com/example/viewmodel/SupervisorViewModel.kt): `app/src/main/java/com/example/viewmodel/SupervisorViewModel.kt`

### Other components

- **Worker**
- **Supervisor**

## Connections

- Worker → Main activity: opens app
- Supervisor → Main activity: opens app
- Main activity → App navigation: starts
