# ketlynmelo/sa-ferrovia architecture

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

- Interactive diagram: https://gitdiagram.com/ketlynmelo/sa-ferrovia
- Repository: https://github.com/ketlynmelo/sa-ferrovia

## Overview

SA-Ferrovia is a PHP/MySQL railway monitoring and management application with separate administrator and ordinary-user views. The main user journey is login, access a role-appropriate dashboard, then browse or manage trains, sensors, and routes or inspect sensor data. Admin pages also manage users; README additionally describes alerts and filtered reports, whose implementation is not identifiable in the sampled tree. The graph reflects documented capabilities and shown imports, links, and database operations; unshown workflows are left unconnected or marked unverified.

Main entry points: [`infra/conexao.php`](https://github.com/ketlynmelo/sa-ferrovia/blob/main/infra/conexao.php) (DB connection and access checks), [`public/Administrador/home_page/adm_home.php`](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/home_page/adm_home.php) (Admin dashboard), [`public/Administrador/monitoramento_page/adm_monitoramento.php`](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/monitoramento_page/adm_monitoramento.php) (Admin monitoring), [`public/Usuário/home_page/usuario_home.php`](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/home_page/usuario_home.php) (User dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Access and dashboards"]
  node_login["Login<br/>[index.php]"]
  node_admin_home["Admin dashboard<br/>[adm_home.php]"]
  node_user_home["User dashboard<br/>[usuario_home.php]"]
end

subgraph group_operations["Railway operations"]
  node_user_admin["User administration"]
  node_train_admin["Train management"]
  node_sensor_admin["Sensor management"]
  node_route_admin["Route management"]
  node_user_routes["Route browsing<br/>[rotas_usuario.php]"]
end

subgraph group_monitoring["Monitoring"]
  node_admin_monitor["Admin monitoring"]
  node_admin_sensor_detail["Admin sensor details"]
  node_user_monitor["User monitoring"]
  node_user_sensor_detail["User sensor details"]
  node_reports["Filtered reports"]
  node_alerts["Abnormality alerts"]
end

subgraph group_platform["Data and integrations"]
  node_connection["DB connection and access checks<br/>[conexao.php]"]
  node_database[("Application database<br/>[db.sql]")]
  node_climate["Weather API client<br/>[clima.php]"]
end

node_visitor(("Visitor"))
node_weather_service{{"OpenWeatherMap"}}

node_visitor -->|"opens login"| node_login
node_login -->|"includes connection"| node_connection
node_connection -->|"connects to"| node_database
node_connection -->|"guards access"| node_admin_home
node_connection -->|"guards access"| node_user_home
node_admin_home -->|"queries data"| node_connection
node_admin_home -->|"includes weather"| node_climate
node_climate -->|"requests weather"| node_weather_service
node_user_home -->|"queries sensors"| node_connection
node_user_routes -->|"queries routes"| node_connection
node_user_monitor -->|"links sensor search"| node_user_sensor_detail
node_user_sensor_detail -->|"loads sensor details"| node_connection
node_admin_sensor_detail -->|"loads sensor details"| node_connection
node_sensor_admin -->|"updates sensor and route"| node_connection
node_train_admin -->|"updates train"| node_connection
node_user_admin -->|"loads user editor"| node_connection
node_admin_monitor -->|"loads monitoring data"| node_connection
node_visitor -.->|"enters as admin"| node_admin_home
node_visitor -.->|"enters as user"| node_user_home
node_admin_home -.->|"manages trains"| node_train_admin
node_admin_home -.->|"manages sensors"| node_sensor_admin
node_admin_home -.->|"manages routes"| node_route_admin
node_admin_home -.->|"manages users"| node_user_admin
node_admin_home -.->|"opens monitoring"| node_admin_monitor
node_user_home -->|"browses routes"| node_user_routes
node_user_home -->|"opens monitoring"| node_user_monitor
node_admin_monitor -.->|"opens sensor details"| node_admin_sensor_detail
node_admin_monitor -.->|"provides reports"| node_reports
node_admin_monitor -.->|"surfaces alerts"| node_alerts

click node_login "https://github.com/ketlynmelo/sa-ferrovia/blob/main/index.php"
click node_admin_home "https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/home_page/adm_home.php"
click node_user_home "https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/home_page/usuario_home.php"
click node_user_admin "https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/usuario_page"
click node_train_admin "https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/home_page/trem"
click node_sensor_admin "https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/home_page/sensor"
click node_route_admin "https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/home_page/rotas"
click node_user_routes "https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/rotas_usuario/rotas_usuario.php"
click node_admin_monitor "https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/monitoramento_page/adm_monitoramento.php"
click node_admin_sensor_detail "https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/monitoramento_page/adm_visualizar_sensor.php"
click node_user_monitor "https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/monitoramento_page/usuario_monitoramento.php"
click node_user_sensor_detail "https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/monitoramento_page/usuario_visualizar_sensor.php"
click node_reports "https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/monitoramento_page"
click node_alerts "https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/monitoramento_page"
click node_connection "https://github.com/ketlynmelo/sa-ferrovia/blob/main/infra/conexao.php"
click node_database "https://github.com/ketlynmelo/sa-ferrovia/blob/main/database/db.sql"
click node_climate "https://github.com/ketlynmelo/sa-ferrovia/blob/main/infra/clima.php"

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_login,node_admin_home,node_user_home toneBlue
class node_user_admin,node_train_admin,node_sensor_admin,node_route_admin,node_user_routes toneAmber
class node_admin_monitor,node_admin_sensor_detail,node_user_monitor,node_user_sensor_detail,node_reports,node_alerts toneMint
class node_connection,node_database,node_climate toneRose
class node_visitor,node_weather_service toneIndigo
```

## Components

### Access and dashboards

- [Login](https://github.com/ketlynmelo/sa-ferrovia/blob/main/index.php): `index.php`
- [Admin dashboard](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/home_page/adm_home.php): `public/Administrador/home_page/adm_home.php`
- [User dashboard](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/home_page/usuario_home.php): `public/Usuário/home_page/usuario_home.php`

### Railway operations

- [User administration](https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/usuario_page): `public/Administrador/usuario_page`
- [Train management](https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/home_page/trem): `public/Administrador/home_page/trem`
- [Sensor management](https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/home_page/sensor): `public/Administrador/home_page/sensor`
- [Route management](https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/home_page/rotas): `public/Administrador/home_page/rotas`
- [Route browsing](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/rotas_usuario/rotas_usuario.php): `public/Usuário/rotas_usuario/rotas_usuario.php`

### Monitoring

- [Admin monitoring](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/monitoramento_page/adm_monitoramento.php): `public/Administrador/monitoramento_page/adm_monitoramento.php`
- [Admin sensor details](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Administrador/monitoramento_page/adm_visualizar_sensor.php): `public/Administrador/monitoramento_page/adm_visualizar_sensor.php`
- [User monitoring](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/monitoramento_page/usuario_monitoramento.php): `public/Usuário/monitoramento_page/usuario_monitoramento.php`
- [User sensor details](https://github.com/ketlynmelo/sa-ferrovia/blob/main/public/Usu%C3%A1rio/monitoramento_page/usuario_visualizar_sensor.php): `public/Usuário/monitoramento_page/usuario_visualizar_sensor.php`
- [Filtered reports](https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/monitoramento_page): `public/Administrador/monitoramento_page`
- [Abnormality alerts](https://github.com/ketlynmelo/sa-ferrovia/tree/main/public/Administrador/monitoramento_page): `public/Administrador/monitoramento_page`

### Data and integrations

- [DB connection and access checks](https://github.com/ketlynmelo/sa-ferrovia/blob/main/infra/conexao.php): `infra/conexao.php`
- [Application database](https://github.com/ketlynmelo/sa-ferrovia/blob/main/database/db.sql): `database/db.sql`
- [Weather API client](https://github.com/ketlynmelo/sa-ferrovia/blob/main/infra/clima.php): `infra/clima.php`

### Other components

- **Visitor**
- **OpenWeatherMap**

## Connections

- Visitor → Login: opens login (evidence: `README.md`)
- Login → DB connection and access checks: includes connection (evidence: `index.php`)
- DB connection and access checks → Application database: connects to (evidence: `infra/conexao.php`)
- DB connection and access checks → Admin dashboard: guards access (evidence: `infra/conexao.php`)
- DB connection and access checks → User dashboard: guards access (evidence: `infra/conexao.php`)
- Admin dashboard → DB connection and access checks: queries data (evidence: `public/Administrador/home_page/adm_home.php`)
- Admin dashboard → Weather API client: includes weather (evidence: `public/Administrador/home_page/adm_home.php`)
- Weather API client → OpenWeatherMap: requests weather (evidence: `infra/clima.php`)
- User dashboard → DB connection and access checks: queries sensors (evidence: `public/Usuário/home_page/usuario_home.php`)
- Route browsing → DB connection and access checks: queries routes (evidence: `public/Usuário/rotas_usuario/rotas_usuario.php`)
- User monitoring → User sensor details: links sensor search (evidence: `public/Usuário/monitoramento_page/usuario_monitoramento.php`)
- User sensor details → DB connection and access checks: loads sensor details (evidence: `public/Usuário/monitoramento_page/usuario_visualizar_sensor.php`)
- Admin sensor details → DB connection and access checks: loads sensor details (evidence: `public/Administrador/monitoramento_page/adm_visualizar_sensor.php`)
- Sensor management → DB connection and access checks: updates sensor and route (evidence: `public/Administrador/home_page/sensor/editar_sensor.php`)
- Train management → DB connection and access checks: updates train (evidence: `public/Administrador/home_page/trem/editar_trem.php`)
- User administration → DB connection and access checks: loads user editor (evidence: `public/Administrador/usuario_page/editar_usuario.php`)
- Admin monitoring → DB connection and access checks: loads monitoring data (evidence: `public/Administrador/monitoramento_page/adm_monitoramento.php`)
- Visitor → Admin dashboard: enters as admin (evidence: `README.md`)
- Visitor → User dashboard: enters as user (evidence: `README.md`)
- Admin dashboard → Train management: manages trains (evidence: `README.md`)
- Admin dashboard → Sensor management: manages sensors (evidence: `README.md`)
- Admin dashboard → Route management: manages routes (evidence: `README.md`)
- Admin dashboard → User administration: manages users (evidence: `README.md`)
- Admin dashboard → Admin monitoring: opens monitoring (evidence: `README.md`)
- User dashboard → Route browsing: browses routes (evidence: `public/Usuário/home_page/usuario_home.php`)
- User dashboard → User monitoring: opens monitoring (evidence: `public/Usuário/home_page/usuario_home.php`)
- Admin monitoring → Admin sensor details: opens sensor details (evidence: `README.md`)
- Admin monitoring → Filtered reports: provides reports (evidence: `README.md`)
- Admin monitoring → Abnormality alerts: surfaces alerts (evidence: `README.md`)
