# maxdsa1234/remote-monitoring architecture

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

## Overview

CardiaCare acquires heart-rate and ECG data in its Android app, sends telemetry through MQTT, and presents patient history and live charts in a React dashboard. The README describes a cloud path for anomaly inference and storage, with AppSync supplying dashboard data; those cloud services are documented but their infrastructure configuration is not present in the sampled source. The repository also includes model training and Lambda inference code. Source excerpts show Android and dashboard wiring; cloud-stage links reflect the README rather than inspected infrastructure code.

Main entry points: [`desktop-app/src/App.js`](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/App.js) (Dashboard app), [`BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt`](https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt) (App coordinator), [`machine-learning/docker/lambda_function.py`](https://github.com/maxdsa1234/remote-monitoring/blob/main/machine-learning/docker/lambda_function.py) (Inference Lambda), [`desktop-app/src/components/HeartRateChart.js`](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/HeartRateChart.js) (Heart-rate chart)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Android acquisition"]
  node_main["App coordinator<br/>[MainActivity.kt]"]
  node_ble["BLE acquisition<br/>[BleManager.kt]"]
  node_sim["ECG simulator<br/>[ECGSimulator.kt]"]
  node_mobileui["Patient controls"]
  node_mqttclient["MQTT publisher<br/>[AwsMqttManager.kt]"]
end

subgraph group_cloud["Cloud processing"]
  node_iot{{"AWS IoT Core"}}
  node_dynamo[("DynamoDB")]
  node_appsync{{"AppSync GraphQL"}}
  node_auth{{"Cognito auth"}}
end

subgraph group_ml["Anomaly detection"]
  node_lambda["Inference Lambda<br/>[lambda_function.py]"]
  node_model["LSTM autoencoder"]
  node_training["Training pipeline"]
end

subgraph group_dashboard["Patient dashboard"]
  node_webapp["Dashboard app<br/>[App.js]"]
  node_patients["Patient list<br/>[PatientTable.js]"]
  node_patientbox["Patient summary<br/>[PatientBox.js]"]
  node_sidebar["Navigation<br/>[Sidebar.js]"]
  node_heartrate["Heart-rate chart<br/>[HeartRateChart.js]"]
  node_ecglive["Live ECG chart<br/>[EcgLiveChart.js]"]
  node_ecghistory["ECG history<br/>[EcgHistoryTable.js]"]
  node_queries["GraphQL queries<br/>[queries.js]"]
  node_subscriptions["GraphQL subscriptions<br/>[subscriptions.js]"]
end

node_patient(("Patient"))
node_clinician(("Clinician"))

node_patient -->|"uses"| node_main
node_main -->|"renders"| node_mobileui
node_main -->|"delegates scanning"| node_ble
node_main -->|"starts demos"| node_sim
node_main -->|"publishes heart rate"| node_mqttclient
node_sim -->|"publishes ECG"| node_mqttclient
node_ble -->|"reports heart rate"| node_main
node_mqttclient -->|"publishes telemetry"| node_iot
node_iot -->|"routes events"| node_lambda
node_lambda -->|"runs inference"| node_model
node_training -->|"exports model"| node_model
node_lambda -->|"stores results"| node_dynamo
node_dynamo -->|"serves stored data"| node_appsync
node_appsync -->|"serves GraphQL data"| node_webapp
node_webapp -->|"authenticates users"| node_auth
node_webapp -->|"renders"| node_patients
node_webapp -->|"renders"| node_patientbox
node_webapp -->|"renders"| node_sidebar
node_webapp -->|"renders"| node_heartrate
node_webapp -->|"renders"| node_ecglive
node_webapp -->|"renders"| node_ecghistory
node_heartrate -->|"loads history"| node_queries
node_ecghistory -->|"loads records"| node_queries
node_ecglive -->|"loads ECG data"| node_queries
node_ecglive -->|"subscribes to ECG"| node_subscriptions
node_heartrate -->|"receives live telemetry"| node_iot
node_clinician -->|"views patients"| node_webapp

click node_main "https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt"
click node_ble "https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/ble/BleManager.kt"
click node_sim "https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/ble/ECGSimulator.kt"
click node_mobileui "https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/ui/screens/PatientDashboard.kt"
click node_mqttclient "https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/iot/AwsMqttManager.kt"
click node_lambda "https://github.com/maxdsa1234/remote-monitoring/blob/main/machine-learning/docker/lambda_function.py"
click node_model "https://github.com/maxdsa1234/remote-monitoring/blob/main/machine-learning/docker/lstm_autoencoder.onnx"
click node_training "https://github.com/maxdsa1234/remote-monitoring/blob/main/machine-learning/lstm-autoencoder.ipynb"
click node_webapp "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/App.js"
click node_patients "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/PatientTable.js"
click node_patientbox "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/PatientBox.js"
click node_sidebar "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/Sidebar.js"
click node_heartrate "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/HeartRateChart.js"
click node_ecglive "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/EcgLiveChart.js"
click node_ecghistory "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/EcgHistoryTable.js"
click node_queries "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/graphql/queries.js"
click node_subscriptions "https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/graphql/subscriptions.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_main,node_ble,node_sim,node_mobileui,node_mqttclient toneBlue
class node_iot,node_dynamo,node_appsync,node_auth toneAmber
class node_lambda,node_model,node_training toneMint
class node_webapp,node_patients,node_patientbox,node_sidebar,node_heartrate,node_ecglive,node_ecghistory,node_queries,node_subscriptions toneRose
class node_patient,node_clinician toneIndigo
```

## Components

### Android acquisition

- [App coordinator](https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt): `BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt`
- [BLE acquisition](https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/ble/BleManager.kt): `BLEtest3/app/src/main/java/com/uol/bletest3/ble/BleManager.kt`
- [ECG simulator](https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/ble/ECGSimulator.kt): `BLEtest3/app/src/main/java/com/uol/bletest3/ble/ECGSimulator.kt`
- [Patient controls](https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/ui/screens/PatientDashboard.kt): `BLEtest3/app/src/main/java/com/uol/bletest3/ui/screens/PatientDashboard.kt`
- [MQTT publisher](https://github.com/maxdsa1234/remote-monitoring/blob/main/BLEtest3/app/src/main/java/com/uol/bletest3/iot/AwsMqttManager.kt): `BLEtest3/app/src/main/java/com/uol/bletest3/iot/AwsMqttManager.kt`

### Cloud processing

- **AWS IoT Core**
- **DynamoDB**
- **AppSync GraphQL**
- **Cognito auth**

### Anomaly detection

- [Inference Lambda](https://github.com/maxdsa1234/remote-monitoring/blob/main/machine-learning/docker/lambda_function.py): `machine-learning/docker/lambda_function.py`
- [LSTM autoencoder](https://github.com/maxdsa1234/remote-monitoring/blob/main/machine-learning/docker/lstm_autoencoder.onnx): `machine-learning/docker/lstm_autoencoder.onnx`
- [Training pipeline](https://github.com/maxdsa1234/remote-monitoring/blob/main/machine-learning/lstm-autoencoder.ipynb): `machine-learning/lstm-autoencoder.ipynb`

### Patient dashboard

- [Dashboard app](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/App.js): `desktop-app/src/App.js`
- [Patient list](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/PatientTable.js): `desktop-app/src/components/PatientTable.js`
- [Patient summary](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/PatientBox.js): `desktop-app/src/components/PatientBox.js`
- [Navigation](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/Sidebar.js): `desktop-app/src/components/Sidebar.js`
- [Heart-rate chart](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/HeartRateChart.js): `desktop-app/src/components/HeartRateChart.js`
- [Live ECG chart](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/EcgLiveChart.js): `desktop-app/src/components/EcgLiveChart.js`
- [ECG history](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/components/EcgHistoryTable.js): `desktop-app/src/components/EcgHistoryTable.js`
- [GraphQL queries](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/graphql/queries.js): `desktop-app/src/graphql/queries.js`
- [GraphQL subscriptions](https://github.com/maxdsa1234/remote-monitoring/blob/main/desktop-app/src/graphql/subscriptions.js): `desktop-app/src/graphql/subscriptions.js`

### Other components

- **Patient**
- **Clinician**

## Connections

- Patient → App coordinator: uses (evidence: `README.md`)
- App coordinator → Patient controls: renders (evidence: `BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt`)
- App coordinator → BLE acquisition: delegates scanning (evidence: `BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt`)
- App coordinator → ECG simulator: starts demos (evidence: `BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt`)
- App coordinator → MQTT publisher: publishes heart rate (evidence: `BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt`)
- ECG simulator → MQTT publisher: publishes ECG (evidence: `BLEtest3/app/src/main/java/com/uol/bletest3/ble/ECGSimulator.kt`)
- BLE acquisition → App coordinator: reports heart rate (evidence: `BLEtest3/app/src/main/java/com/uol/bletest3/MainActivity.kt`)
- MQTT publisher → AWS IoT Core: publishes telemetry (evidence: `README.md`)
- AWS IoT Core → Inference Lambda: routes events (evidence: `README.md`)
- Inference Lambda → LSTM autoencoder: runs inference (evidence: `README.md`)
- Training pipeline → LSTM autoencoder: exports model (evidence: `README.md`)
- Inference Lambda → DynamoDB: stores results (evidence: `README.md`)
- DynamoDB → AppSync GraphQL: serves stored data (evidence: `README.md`)
- AppSync GraphQL → Dashboard app: serves GraphQL data (evidence: `README.md`)
- Dashboard app → Cognito auth: authenticates users (evidence: `README.md`)
- Dashboard app → Patient list: renders (evidence: `desktop-app/src/App.js`)
- Dashboard app → Patient summary: renders (evidence: `desktop-app/src/App.js`)
- Dashboard app → Navigation: renders (evidence: `desktop-app/src/App.js`)
- Dashboard app → Heart-rate chart: renders (evidence: `desktop-app/src/App.js`)
- Dashboard app → Live ECG chart: renders (evidence: `desktop-app/src/App.js`)
- Dashboard app → ECG history: renders (evidence: `desktop-app/src/App.js`)
- Heart-rate chart → GraphQL queries: loads history (evidence: `desktop-app/src/components/HeartRateChart.js`)
- ECG history → GraphQL queries: loads records (evidence: `desktop-app/src/components/EcgHistoryTable.js`)
- Live ECG chart → GraphQL queries: loads ECG data (evidence: `desktop-app/src/components/EcgLiveChart.js`)
- Live ECG chart → GraphQL subscriptions: subscribes to ECG (evidence: `desktop-app/src/components/EcgLiveChart.js`)
- Heart-rate chart → AWS IoT Core: receives live telemetry (evidence: `desktop-app/src/components/HeartRateChart.js`)
- Clinician → Dashboard app: views patients (evidence: `README.md`)
