# ffareedabbasi47-hub/transformer- architecture

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

- Interactive diagram: https://gitdiagram.com/ffareedabbasi47-hub/transformer-
- Repository: https://github.com/ffareedabbasi47-hub/transformer-

## Overview

STSMN monitors transformer safety through ESP32 protection firmware and an Android app, with an optional realtime fleet service. The main phone workflow is to connect over local Wi-Fi or BLE, receive and parse device status, and present monitoring, history, and map views; the app can also relay live packets to the fleet service. The graph preserves the documented globe/map and fleet capabilities. Some implementation links are supported only by the source index or README, so unsampled details are omitted.

Main entry points: [`Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt`](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt) (Device polling), [`Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt`](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt) (Monitoring state), [`Android/app/src/main/java/com/stsmn/monitor/ui/StsmnApp.kt`](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/ui/StsmnApp.kt) (App navigation), [`server/src/server.js`](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/server/src/server.js) (Fleet gateway)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_android["Android monitoring"]
  node_activity["App entry<br/>[MainActivity.kt]"]
  node_app_ui["App navigation<br/>[StsmnApp.kt]"]
  node_viewmodel["Monitoring state<br/>[MainViewModel.kt]"]
  node_repository["Device polling<br/>[StsmnRepository.kt]"]
  node_espclient["Wi-Fi API<br/>[EspClient.kt]"]
  node_ble["BLE link<br/>[BleClient.kt]"]
  node_binder["Wi-Fi binding"]
  node_parser["Status validation<br/>[StatusParser.kt]"]
  node_history[("Event history<br/>[EventStore.kt]")]
  node_settings[("User settings<br/>[SettingsStore.kt]")]
  node_map["Earth and maps<br/>[MapScreen.kt]"]
  node_fleet_repo["Fleet client<br/>[FleetRepository.kt]"]
  node_realtime["Realtime socket<br/>[RealtimeLink.kt]"]
end

subgraph group_firmware["ESP32 protection"]
  node_sensors["Sensor acquisition<br/>[sensors.h]"]
  node_flame["Flame detection<br/>[flame_detect.h]"]
  node_risk["Risk scoring<br/>[risk_engine.h]"]
  node_fw_config["Firmware thresholds<br/>[config.h]"]
end

subgraph group_fleet["Realtime fleet"]
  node_server["Fleet gateway<br/>[server.js]"]
  node_registry[("Device registry<br/>[registry.js]")]
  node_validation["Telemetry validation<br/>[validate.js]"]
end

node_user(("Operator"))
node_network(("Local Wi-Fi"))

node_user -->|"opens app"| node_activity
node_activity -->|"sets content"| node_app_ui
node_app_ui -->|"uses state"| node_viewmodel
node_viewmodel -->|"starts polling"| node_repository
node_repository -->|"fetches status"| node_espclient
node_repository -->|"reads BLE"| node_ble
node_repository -->|"binds network"| node_binder
node_repository -->|"parses status"| node_parser
node_repository -->|"records events"| node_history
node_viewmodel -->|"observes settings"| node_settings
node_app_ui -->|"offers map"| node_map
node_viewmodel -->|"configures fleet"| node_fleet_repo
node_viewmodel -->|"relays telemetry"| node_fleet_repo
node_fleet_repo -->|"uses socket"| node_realtime
node_network -->|"carries requests"| node_espclient
node_sensors -->|"uses detector"| node_flame
node_sensors -->|"reads thresholds"| node_fw_config
node_flame -->|"uses settings"| node_fw_config
node_risk -->|"reads thresholds"| node_fw_config
node_realtime -.->|"syncs fleet"| node_server
node_server -->|"authenticates devices"| node_registry
node_server -->|"validates telemetry"| node_validation
node_registry -->|"checks identifiers"| node_validation

click node_activity "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/MainActivity.kt"
click node_app_ui "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/ui/StsmnApp.kt"
click node_viewmodel "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt"
click node_repository "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt"
click node_espclient "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/EspClient.kt"
click node_ble "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/BleClient.kt"
click node_binder "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/WifiNetworkBinder.kt"
click node_parser "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/domain/StatusParser.kt"
click node_history "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/EventStore.kt"
click node_settings "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/SettingsStore.kt"
click node_map "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/ui/MapScreen.kt"
click node_fleet_repo "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/FleetRepository.kt"
click node_realtime "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/RealtimeLink.kt"
click node_sensors "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/sensors.h"
click node_flame "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/flame_detect.h"
click node_risk "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/risk_engine.h"
click node_fw_config "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/config.h"
click node_server "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/server/src/server.js"
click node_registry "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/server/src/registry.js"
click node_validation "https://github.com/ffareedabbasi47-hub/transformer-/blob/main/server/src/validate.js"

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_app_ui,node_viewmodel,node_repository,node_espclient,node_ble,node_binder,node_parser,node_history,node_settings,node_map,node_fleet_repo,node_realtime toneBlue
class node_sensors,node_flame,node_risk,node_fw_config toneAmber
class node_server,node_registry,node_validation toneMint
class node_user,node_network toneIndigo
```

## Components

### Android monitoring

- [App entry](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/MainActivity.kt): `Android/app/src/main/java/com/stsmn/monitor/MainActivity.kt`
- [App navigation](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/ui/StsmnApp.kt): `Android/app/src/main/java/com/stsmn/monitor/ui/StsmnApp.kt`
- [Monitoring state](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt): `Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt`
- [Device polling](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt): `Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt`
- [Wi-Fi API](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/EspClient.kt): `Android/app/src/main/java/com/stsmn/monitor/data/EspClient.kt`
- [BLE link](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/BleClient.kt): `Android/app/src/main/java/com/stsmn/monitor/data/BleClient.kt`
- [Wi-Fi binding](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/WifiNetworkBinder.kt): `Android/app/src/main/java/com/stsmn/monitor/data/WifiNetworkBinder.kt`
- [Status validation](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/domain/StatusParser.kt): `Android/app/src/main/java/com/stsmn/monitor/domain/StatusParser.kt`
- [Event history](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/EventStore.kt): `Android/app/src/main/java/com/stsmn/monitor/data/EventStore.kt`
- [User settings](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/SettingsStore.kt): `Android/app/src/main/java/com/stsmn/monitor/data/SettingsStore.kt`
- [Earth and maps](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/ui/MapScreen.kt): `Android/app/src/main/java/com/stsmn/monitor/ui/MapScreen.kt`
- [Fleet client](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/FleetRepository.kt): `Android/app/src/main/java/com/stsmn/monitor/data/FleetRepository.kt`
- [Realtime socket](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/Android/app/src/main/java/com/stsmn/monitor/data/RealtimeLink.kt): `Android/app/src/main/java/com/stsmn/monitor/data/RealtimeLink.kt`

### ESP32 protection

- [Sensor acquisition](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/sensors.h): `ESP32/stsmn_firmware/sensors.h`
- [Flame detection](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/flame_detect.h): `ESP32/stsmn_firmware/flame_detect.h`
- [Risk scoring](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/risk_engine.h): `ESP32/stsmn_firmware/risk_engine.h`
- [Firmware thresholds](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/ESP32/stsmn_firmware/config.h): `ESP32/stsmn_firmware/config.h`

### Realtime fleet

- [Fleet gateway](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/server/src/server.js): `server/src/server.js`
- [Device registry](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/server/src/registry.js): `server/src/registry.js`
- [Telemetry validation](https://github.com/ffareedabbasi47-hub/transformer-/blob/main/server/src/validate.js): `server/src/validate.js`

### Other components

- **Operator**
- **Local Wi-Fi**

## Connections

- Operator → App entry: opens app (evidence: `README.md`)
- App entry → App navigation: sets content (evidence: `Android/app/src/main/java/com/stsmn/monitor/MainActivity.kt`)
- App navigation → Monitoring state: uses state (evidence: `Android/app/src/main/java/com/stsmn/monitor/MainActivity.kt`)
- Monitoring state → Device polling: starts polling (evidence: `Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt`)
- Device polling → Wi-Fi API: fetches status (evidence: `Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt`)
- Device polling → BLE link: reads BLE (evidence: `Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt`)
- Device polling → Wi-Fi binding: binds network (evidence: `Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt`)
- Device polling → Status validation: parses status (evidence: `Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt`)
- Device polling → Event history: records events (evidence: `Android/app/src/main/java/com/stsmn/monitor/data/StsmnRepository.kt`)
- Monitoring state → User settings: observes settings (evidence: `Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt`)
- App navigation → Earth and maps: offers map (evidence: `README.md`)
- Monitoring state → Fleet client: configures fleet (evidence: `Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt`)
- Monitoring state → Fleet client: relays telemetry (evidence: `Android/app/src/main/java/com/stsmn/monitor/MainViewModel.kt`)
- Fleet client → Realtime socket: uses socket (evidence: `Android/app/src/main/java/com/stsmn/monitor/data/FleetRepository.kt`)
- Local Wi-Fi → Wi-Fi API: carries requests (evidence: `README.md`)
- Sensor acquisition → Flame detection: uses detector (evidence: `ESP32/stsmn_firmware/sensors.h`)
- Sensor acquisition → Firmware thresholds: reads thresholds (evidence: `ESP32/stsmn_firmware/sensors.h`)
- Flame detection → Firmware thresholds: uses settings (evidence: `ESP32/stsmn_firmware/flame_detect.h`)
- Risk scoring → Firmware thresholds: reads thresholds (evidence: `ESP32/stsmn_firmware/risk_engine.h`)
- Realtime socket → Fleet gateway: syncs fleet
- Fleet gateway → Device registry: authenticates devices (evidence: `server/src/server.js`)
- Fleet gateway → Telemetry validation: validates telemetry (evidence: `server/src/server.js`)
- Device registry → Telemetry validation: checks identifiers (evidence: `server/src/registry.js`)
