# sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app architecture

> Architecture diagram of the GitHub repository sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app
- Repository: https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app

## Overview

Water Quality Monitor is an IoT system: an ESP32 measures water conditions, shows readings locally, and streams them to Firebase; the Flutter app presents live and historical readings, alerts, and administrator-managed access. The graph separates device acquisition, Firebase services, monitoring UI, and access management. README documentation supports the device-to-database and app capability relationships. Source excerpts were unavailable, so internal call wiring and undocumented storage choices are intentionally not inferred.

Main entry points: [`flutter_app/water_quality_app/lib/services/sensor_service.dart`](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/services/sensor_service.dart) (Sensor data service), [`firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino`](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino) (ESP32 firmware), [`flutter_app/water_quality_app/lib/screens/admin/user_management_screen.dart`](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/admin/user_management_screen.dart) (User management), [`flutter_app/water_quality_app/lib/screens/dashboard/dashboard_screen.dart`](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/dashboard/dashboard_screen.dart) (Live dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_device["ESP32 device"]
  node_probes["Water sensors"]
  node_firmware["ESP32 firmware"]
  node_lcd["Offline LCD"]
end

subgraph group_firebase["Firebase backend"]
  node_rtdb[("Realtime Database")]
  node_firestore[("Firestore")]
  node_firebase_auth["Firebase Authentication"]
  node_rtdb_rules["RTDB rules"]
  node_firestore_rules["Firestore rules"]
end

subgraph group_monitoring["Monitoring app"]
  node_app_root["App entry and routing<br/>[main.dart]"]
  node_dashboard["Live dashboard"]
  node_history["History charts"]
  node_alerts["Alert settings<br/>[alerts_screen.dart]"]
  node_thresholds["Safe-range thresholds<br/>[thresholds.dart]"]
  node_readings["Reading model<br/>[water_reading.dart]"]
  node_sensor_service["Sensor data service"]
end

subgraph group_access["App access"]
  node_login["Login<br/>[login_screen.dart]"]
  node_auth_service["Authentication service<br/>[auth_service.dart]"]
  node_user_management["User management"]
  node_add_user["Add user"]
end

node_operator(("Monitor operator"))
node_administrator(("Administrator"))

node_probes -->|"supply readings"| node_firmware
node_firmware -->|"display locally"| node_lcd
node_firmware -->|"stream readings"| node_rtdb
node_operator -->|"view live"| node_dashboard
node_operator -->|"view trends"| node_history
node_operator -->|"configure limits"| node_alerts
node_app_root -->|"route to"| node_dashboard
node_app_root -->|"route to"| node_login
node_dashboard -->|"request live data"| node_sensor_service
node_history -->|"request history"| node_sensor_service
node_sensor_service -->|"read readings"| node_rtdb
node_sensor_service -->|"provide readings"| node_readings
node_alerts -->|"configure ranges"| node_thresholds
node_administrator -->|"manage accounts"| node_user_management
node_user_management -->|"add account"| node_add_user
node_add_user -->|"create account"| node_auth_service
node_login -->|"authenticate"| node_auth_service
node_auth_service -->|"sign in"| node_firebase_auth
node_user_management -->|"manage profiles"| node_firestore
node_rtdb_rules -->|"govern access"| node_rtdb
node_firestore_rules -->|"govern access"| node_firestore

click node_probes "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino"
click node_firmware "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino"
click node_lcd "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino"
click node_rtdb_rules "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/firebase_rtdb_rules.json"
click node_firestore_rules "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/firestore_rules.txt"
click node_app_root "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/main.dart"
click node_dashboard "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/dashboard/dashboard_screen.dart"
click node_history "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/dashboard/history_screen.dart"
click node_alerts "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/dashboard/alerts_screen.dart"
click node_thresholds "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/models/thresholds.dart"
click node_readings "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/models/water_reading.dart"
click node_sensor_service "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/services/sensor_service.dart"
click node_login "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/auth/login_screen.dart"
click node_auth_service "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/services/auth_service.dart"
click node_user_management "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/admin/user_management_screen.dart"
click node_add_user "https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/admin/add_user_screen.dart"

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_probes,node_firmware,node_lcd toneBlue
class node_rtdb,node_firestore,node_firebase_auth,node_rtdb_rules,node_firestore_rules toneAmber
class node_app_root,node_dashboard,node_history,node_alerts,node_thresholds,node_readings,node_sensor_service toneMint
class node_login,node_auth_service,node_user_management,node_add_user toneRose
class node_operator,node_administrator toneIndigo
```

## Components

### ESP32 device

- [Water sensors](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino): `firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino`
- [ESP32 firmware](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino): `firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino`
- [Offline LCD](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino): `firmware/Water_Quality_Monitoring/Water_Quality_Monitoring.ino`

### Firebase backend

- **Realtime Database**
- **Firestore**
- **Firebase Authentication**
- [RTDB rules](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/firebase_rtdb_rules.json): `flutter_app/water_quality_app/firebase_rtdb_rules.json`
- [Firestore rules](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/firestore_rules.txt): `flutter_app/water_quality_app/firestore_rules.txt`

### Monitoring app

- [App entry and routing](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/main.dart): `flutter_app/water_quality_app/lib/main.dart`
- [Live dashboard](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/dashboard/dashboard_screen.dart): `flutter_app/water_quality_app/lib/screens/dashboard/dashboard_screen.dart`
- [History charts](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/dashboard/history_screen.dart): `flutter_app/water_quality_app/lib/screens/dashboard/history_screen.dart`
- [Alert settings](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/dashboard/alerts_screen.dart): `flutter_app/water_quality_app/lib/screens/dashboard/alerts_screen.dart`
- [Safe-range thresholds](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/models/thresholds.dart): `flutter_app/water_quality_app/lib/models/thresholds.dart`
- [Reading model](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/models/water_reading.dart): `flutter_app/water_quality_app/lib/models/water_reading.dart`
- [Sensor data service](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/services/sensor_service.dart): `flutter_app/water_quality_app/lib/services/sensor_service.dart`

### App access

- [Login](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/auth/login_screen.dart): `flutter_app/water_quality_app/lib/screens/auth/login_screen.dart`
- [Authentication service](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/services/auth_service.dart): `flutter_app/water_quality_app/lib/services/auth_service.dart`
- [User management](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/admin/user_management_screen.dart): `flutter_app/water_quality_app/lib/screens/admin/user_management_screen.dart`
- [Add user](https://github.com/sameer-saif1/iot-water-quality-monitoring-with-esp32-flutter-app/blob/main/flutter_app/water_quality_app/lib/screens/admin/add_user_screen.dart): `flutter_app/water_quality_app/lib/screens/admin/add_user_screen.dart`

### Other components

- **Monitor operator**
- **Administrator**

## Connections

- Water sensors → ESP32 firmware: supply readings
- ESP32 firmware → Offline LCD: display locally
- ESP32 firmware → Realtime Database: stream readings
- Monitor operator → Live dashboard: view live
- Monitor operator → History charts: view trends
- Monitor operator → Alert settings: configure limits
- App entry and routing → Live dashboard: route to
- App entry and routing → Login: route to
- Live dashboard → Sensor data service: request live data
- History charts → Sensor data service: request history
- Sensor data service → Realtime Database: read readings
- Sensor data service → Reading model: provide readings
- Alert settings → Safe-range thresholds: configure ranges
- Administrator → User management: manage accounts
- User management → Add user: add account
- Add user → Authentication service: create account
- Login → Authentication service: authenticate
- Authentication service → Firebase Authentication: sign in
- User management → Firestore: manage profiles
- RTDB rules → Realtime Database: govern access
- Firestore rules → Firestore: govern access
