# souza-diego/projetoirrigasmart architecture

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

- Interactive diagram: https://gitdiagram.com/souza-diego/projetoirrigasmart
- Repository: https://github.com/souza-diego/projetoirrigasmart

## Overview

IrrigaSmart is a Flutter app for monitoring plants and controlling an ESP32-based irrigation system, with a Flask/MySQL backend described in the README. Users monitor moisture and irrigation status, configure manual or automatic watering, manage plant recommendations and system settings, and review irrigation and moisture history. The graph separates presentation, application, domain, and infrastructure responsibilities. Feature-level links are based on README descriptions; Dart implementations were not sampled, so unverified call paths are omitted.

Main entry points: [`lib/main.dart`](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/main.dart) (Flutter app entry), [`lib/aplicacao/irrigacao_app_service.dart`](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/aplicacao/irrigacao_app_service.dart) (Irrigation service), [`lib/apresentacao/telas/tela_controle.dart`](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_controle.dart) (Irrigation control), [`lib/infraestrutura/api/irrigasmart_api_client.dart`](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/infraestrutura/api/irrigasmart_api_client.dart) (IrrigaSmart API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Presentation"]
  node_app["Flutter app entry<br/>[main.dart]"]
  node_monitoring["Live monitoring<br/>[tela_inicio.dart]"]
  node_control["Irrigation control<br/>[tela_controle.dart]"]
  node_plants["Plant management<br/>[tela_plantas.dart]"]
  node_settings["System settings"]
  node_wifi["Wi-Fi setup"]
  node_system["System status<br/>[tela_sistema.dart]"]
end

subgraph group_application["Application"]
  node_irrigation_service["Irrigation service"]
  node_plant_service["Plant service"]
  node_system_service["System service"]
end

subgraph group_domain["Domain"]
  node_decision["Irrigation decisions"]
  node_scheduling["Schedule rules"]
  node_irrigation_config["Irrigation settings"]
  node_history["Irrigation history"]
  node_moisture_history["Moisture history"]
end

subgraph group_infrastructure["Infrastructure"]
  node_plant_catalog["Plant catalog<br/>[dados_plantas.dart]"]
  node_esp_client["ESP HTTP client"]
  node_api["IrrigaSmart API"]
  node_weather["Weather service"]
  node_ble["BLE network setup"]
end

node_user(("App user"))
node_esp{{"ESP32 device"}}
node_database[("MySQL storage")]
node_cloud_backend{{"Flask backend"}}

node_user -->|"uses"| node_app
node_app -->|"presents"| node_monitoring
node_app -->|"presents"| node_control
node_app -->|"presents"| node_plants
node_app -->|"presents"| node_settings
node_app -->|"presents"| node_wifi
node_app -->|"presents"| node_system
node_monitoring -.->|"requests status"| node_irrigation_service
node_control -.->|"requests control"| node_irrigation_service
node_plants -.->|"requests recommendations"| node_plant_service
node_settings -.->|"configures"| node_system_service
node_wifi -->|"sets up Wi-Fi"| node_ble
node_control -->|"configures modes"| node_decision
node_control -->|"sets schedules"| node_scheduling
node_decision -.->|"uses settings"| node_irrigation_config
node_scheduling -.->|"uses settings"| node_irrigation_config
node_plant_service -.->|"applies recommendations"| node_plant_catalog
node_irrigation_service -.->|"communicates with device"| node_esp_client
node_esp_client -->|"controls"| node_esp
node_irrigation_service -.->|"exchanges data"| node_api
node_api -.->|"communicates with"| node_cloud_backend
node_cloud_backend -->|"stores history"| node_database
node_monitoring -.->|"shows weather"| node_weather
node_irrigation_service -.->|"records irrigation"| node_history
node_system_service -.->|"provides readings"| node_moisture_history
node_api -.->|"queries history"| node_history
node_api -.->|"queries history"| node_moisture_history

click node_app "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/main.dart"
click node_monitoring "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_inicio.dart"
click node_control "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_controle.dart"
click node_plants "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_plantas.dart"
click node_settings "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_configuracoes.dart"
click node_wifi "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_wifi_setup.dart"
click node_system "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_sistema.dart"
click node_irrigation_service "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/aplicacao/irrigacao_app_service.dart"
click node_plant_service "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/aplicacao/planta_app_service.dart"
click node_system_service "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/aplicacao/sistema_app_service.dart"
click node_decision "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/servicos/servico_decisao_irrigacao.dart"
click node_scheduling "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/servicos/servico_agendamento.dart"
click node_irrigation_config "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/entidades/configuracao_irrigacao.dart"
click node_history "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/entidades/registro_irrigacao.dart"
click node_moisture_history "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/entidades/registro_umidade.dart"
click node_plant_catalog "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dados/plantas/dados_plantas.dart"
click node_esp_client "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/infraestrutura/hardware/esp_http_client.dart"
click node_api "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/infraestrutura/api/irrigasmart_api_client.dart"
click node_weather "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/infraestrutura/clima/open_weather_client.dart"
click node_ble "https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_wifi_setup.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_app,node_monitoring,node_control,node_plants,node_settings,node_wifi,node_system,node_user toneBlue
class node_irrigation_service,node_plant_service,node_system_service,node_database toneAmber
class node_decision,node_scheduling,node_irrigation_config,node_history,node_moisture_history toneMint
class node_plant_catalog,node_esp_client,node_api,node_weather,node_ble toneRose
class node_esp,node_cloud_backend toneIndigo
```

## Components

### Presentation

- [Flutter app entry](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/main.dart): `lib/main.dart`
- [Live monitoring](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_inicio.dart): `lib/apresentacao/telas/tela_inicio.dart`
- [Irrigation control](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_controle.dart): `lib/apresentacao/telas/tela_controle.dart`
- [Plant management](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_plantas.dart): `lib/apresentacao/telas/tela_plantas.dart`
- [System settings](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_configuracoes.dart): `lib/apresentacao/telas/tela_configuracoes.dart`
- [Wi-Fi setup](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_wifi_setup.dart): `lib/apresentacao/telas/tela_wifi_setup.dart`
- [System status](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_sistema.dart): `lib/apresentacao/telas/tela_sistema.dart`

### Application

- [Irrigation service](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/aplicacao/irrigacao_app_service.dart): `lib/aplicacao/irrigacao_app_service.dart`
- [Plant service](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/aplicacao/planta_app_service.dart): `lib/aplicacao/planta_app_service.dart`
- [System service](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/aplicacao/sistema_app_service.dart): `lib/aplicacao/sistema_app_service.dart`

### Domain

- [Irrigation decisions](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/servicos/servico_decisao_irrigacao.dart): `lib/dominio/servicos/servico_decisao_irrigacao.dart`
- [Schedule rules](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/servicos/servico_agendamento.dart): `lib/dominio/servicos/servico_agendamento.dart`
- [Irrigation settings](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/entidades/configuracao_irrigacao.dart): `lib/dominio/entidades/configuracao_irrigacao.dart`
- [Irrigation history](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/entidades/registro_irrigacao.dart): `lib/dominio/entidades/registro_irrigacao.dart`
- [Moisture history](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dominio/entidades/registro_umidade.dart): `lib/dominio/entidades/registro_umidade.dart`

### Infrastructure

- [Plant catalog](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/dados/plantas/dados_plantas.dart): `lib/dados/plantas/dados_plantas.dart`
- [ESP HTTP client](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/infraestrutura/hardware/esp_http_client.dart): `lib/infraestrutura/hardware/esp_http_client.dart`
- [IrrigaSmart API](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/infraestrutura/api/irrigasmart_api_client.dart): `lib/infraestrutura/api/irrigasmart_api_client.dart`
- [Weather service](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/infraestrutura/clima/open_weather_client.dart): `lib/infraestrutura/clima/open_weather_client.dart`
- [BLE network setup](https://github.com/souza-diego/projetoirrigasmart/blob/main/lib/apresentacao/telas/tela_wifi_setup.dart): `lib/apresentacao/telas/tela_wifi_setup.dart`

### Other components

- **App user**
- **ESP32 device**
- **MySQL storage**
- **Flask backend**

## Connections

- App user → Flutter app entry: uses (evidence: `README.md`)
- Flutter app entry → Live monitoring: presents (evidence: `README.md`)
- Flutter app entry → Irrigation control: presents (evidence: `README.md`)
- Flutter app entry → Plant management: presents (evidence: `README.md`)
- Flutter app entry → System settings: presents (evidence: `README.md`)
- Flutter app entry → Wi-Fi setup: presents (evidence: `README.md`)
- Flutter app entry → System status: presents (evidence: `README.md`)
- Live monitoring → Irrigation service: requests status
- Irrigation control → Irrigation service: requests control
- Plant management → Plant service: requests recommendations
- System settings → System service: configures
- Wi-Fi setup → BLE network setup: sets up Wi-Fi (evidence: `README.md`)
- Irrigation control → Irrigation decisions: configures modes (evidence: `README.md`)
- Irrigation control → Schedule rules: sets schedules (evidence: `README.md`)
- Irrigation decisions → Irrigation settings: uses settings
- Schedule rules → Irrigation settings: uses settings
- Plant service → Plant catalog: applies recommendations
- Irrigation service → ESP HTTP client: communicates with device
- ESP HTTP client → ESP32 device: controls (evidence: `README.md`)
- Irrigation service → IrrigaSmart API: exchanges data
- IrrigaSmart API → Flask backend: communicates with
- Flask backend → MySQL storage: stores history (evidence: `README.md`)
- Live monitoring → Weather service: shows weather
- Irrigation service → Irrigation history: records irrigation
- System service → Moisture history: provides readings
- IrrigaSmart API → Irrigation history: queries history
- IrrigaSmart API → Moisture history: queries history
