# drmsugano/tcc-v2 architecture

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

- Interactive diagram: https://gitdiagram.com/drmsugano/tcc-v2
- Repository: https://github.com/drmsugano/tcc-v2

## Overview

This repository combines a Laravel web application for company, worker, construction-site, supplier, and PPE administration with a separate FastAPI service for querying and exporting certificate-of-approval data. The web workflow routes authenticated user requests to domain controllers, which validate and manipulate Eloquent models and return views or JSON. The CA API routes requests through a service to its local data helper. Relationships are limited to those supported by sampled code and the source index; unsampled features are represented only where their paths and routing are documented.

Main entry points: [`routes/web.php`](https://github.com/drmsugano/tcc-v2/blob/master/routes/web.php) (Web routes), [`app/Models`](https://github.com/drmsugano/tcc-v2/tree/master/app/Models) (Domain records), [`app/Http/Controllers/Admin/UsuarioController.php`](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Admin/UsuarioController.php) (User administration), [`app/Models/Funcionario.php`](https://github.com/drmsugano/tcc-v2/blob/master/app/Models/Funcionario.php) (Employee model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Laravel Web"]
  node_routes["Web routes<br/>[web.php]"]
  node_middleware["Request middleware<br/>[app.php]"]
  node_home["Home and control<br/>[HomeController.php]"]
  node_admin["Company administration"]
  node_works["Works management"]
  node_workdocs["Work documentation"]
  node_database[("Application database<br/>[database.php]")]
end

subgraph group_people["People and Access"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_users["User administration"]
  node_employees["Employee management"]
  node_assignments["Work assignments"]
  node_company["Company model<br/>[Empresa.php]"]
  node_user_model["User and permissions<br/>[Usuario.php]"]
  node_employee_model["Employee model<br/>[Funcionario.php]"]
end

subgraph group_safety["PPE Operations"]
  node_supply["Supplier management"]
  node_epi["PPE inventory<br/>[EpiController.php]"]
  node_delivery["PPE distribution"]
  node_training["Worker training"]
  node_domain_models["Domain records"]
end

subgraph group_ca["CA Lookup API"]
  node_ca_app["CA API entry<br/>[main.py]"]
  node_ca_routes["Certificate routes"]
  node_ca_service["CA service<br/>[CAService.py]"]
  node_ca_data["CA data helper<br/>[BaseDadosCaEPI.py]"]
  node_api_models["API request models"]
end

node_user(("Web user"))
node_ca_user(("API client"))

node_user -->|"sends request"| node_routes
node_routes -->|"applies middleware"| node_middleware
node_routes -->|"routes to"| node_auth
node_routes -->|"routes to"| node_home
node_routes -->|"routes to"| node_admin
node_routes -->|"routes to"| node_users
node_routes -->|"routes to"| node_works
node_routes -->|"routes to"| node_workdocs
node_routes -->|"routes to"| node_employees
node_routes -->|"routes to"| node_assignments
node_routes -->|"routes to"| node_supply
node_routes -->|"routes to"| node_epi
node_routes -->|"routes to"| node_delivery
node_routes -->|"routes to"| node_training
node_admin -->|"queries"| node_company
node_admin -.->|"queries"| node_domain_models
node_users -->|"queries"| node_company
node_users -->|"queries"| node_user_model
node_users -->|"queries permissions"| node_domain_models
node_auth -->|"authenticates"| node_user_model
node_employees -->|"queries"| node_employee_model
node_works -->|"loads workers"| node_employee_model
node_works -->|"checks documentation"| node_domain_models
node_assignments -->|"queries"| node_employee_model
node_workdocs -->|"queries records"| node_domain_models
node_supply -->|"queries records"| node_domain_models
node_epi -->|"queries records"| node_domain_models
node_delivery -->|"loads worker"| node_employee_model
node_delivery -->|"queries PPE records"| node_domain_models
node_training -->|"queries records"| node_domain_models
node_domain_models -.->|"persists records"| node_database
node_ca_user -.->|"requests service"| node_ca_app
node_ca_app -->|"registers router"| node_ca_routes
node_ca_routes -->|"calls service"| node_ca_service
node_ca_routes -->|"uses request models"| node_api_models
node_ca_service -->|"uses data helper"| node_ca_data

click node_routes "https://github.com/drmsugano/tcc-v2/blob/master/routes/web.php"
click node_middleware "https://github.com/drmsugano/tcc-v2/blob/master/bootstrap/app.php"
click node_home "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/HomeController.php"
click node_admin "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Admin/AdminController.php"
click node_works "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Obras/ObrasController.php"
click node_workdocs "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Obras/DocumentacaoObraController.php"
click node_auth "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Auth/AuthController.php"
click node_users "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Admin/UsuarioController.php"
click node_employees "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioController.php"
click node_assignments "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioObraController.php"
click node_company "https://github.com/drmsugano/tcc-v2/blob/master/app/Models/Empresa.php"
click node_user_model "https://github.com/drmsugano/tcc-v2/blob/master/app/Models/Usuario.php"
click node_employee_model "https://github.com/drmsugano/tcc-v2/blob/master/app/Models/Funcionario.php"
click node_supply "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Fornecedor/FornecedorController.php"
click node_epi "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Epi/EpiController.php"
click node_delivery "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioEpiController.php"
click node_training "https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioTreinamentoController.php"
click node_domain_models "https://github.com/drmsugano/tcc-v2/tree/master/app/Models"
click node_ca_app "https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/main.py"
click node_ca_routes "https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/routers/certificadoApovacao.py"
click node_ca_service "https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/Services/CAService.py"
click node_ca_data "https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/Services/BaseDadosCaEPI.py"
click node_api_models "https://github.com/drmsugano/tcc-v2/tree/master/API_BaseCAEPI/app/models"
click node_database "https://github.com/drmsugano/tcc-v2/blob/master/config/database.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_routes,node_middleware,node_home,node_admin,node_works,node_workdocs,node_database,node_user,node_ca_user toneBlue
class node_auth,node_users,node_employees,node_assignments,node_company,node_user_model,node_employee_model toneAmber
class node_supply,node_epi,node_delivery,node_training,node_domain_models toneMint
class node_ca_app,node_ca_routes,node_ca_service,node_ca_data,node_api_models toneRose
```

## Components

### Laravel Web

- [Web routes](https://github.com/drmsugano/tcc-v2/blob/master/routes/web.php): `routes/web.php`
- [Request middleware](https://github.com/drmsugano/tcc-v2/blob/master/bootstrap/app.php): `bootstrap/app.php`
- [Home and control](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/HomeController.php): `app/Http/Controllers/HomeController.php`
- [Company administration](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Admin/AdminController.php): `app/Http/Controllers/Admin/AdminController.php`
- [Works management](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Obras/ObrasController.php): `app/Http/Controllers/Obras/ObrasController.php`
- [Work documentation](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Obras/DocumentacaoObraController.php): `app/Http/Controllers/Obras/DocumentacaoObraController.php`
- [Application database](https://github.com/drmsugano/tcc-v2/blob/master/config/database.php): `config/database.php`

### People and Access

- [Authentication](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Auth/AuthController.php): `app/Http/Controllers/Auth/AuthController.php`
- [User administration](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Admin/UsuarioController.php): `app/Http/Controllers/Admin/UsuarioController.php`
- [Employee management](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioController.php): `app/Http/Controllers/Controle/Funcionario/FuncionarioController.php`
- [Work assignments](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioObraController.php): `app/Http/Controllers/Controle/Funcionario/FuncionarioObraController.php`
- [Company model](https://github.com/drmsugano/tcc-v2/blob/master/app/Models/Empresa.php): `app/Models/Empresa.php`
- [User and permissions](https://github.com/drmsugano/tcc-v2/blob/master/app/Models/Usuario.php): `app/Models/Usuario.php`
- [Employee model](https://github.com/drmsugano/tcc-v2/blob/master/app/Models/Funcionario.php): `app/Models/Funcionario.php`

### PPE Operations

- [Supplier management](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Fornecedor/FornecedorController.php): `app/Http/Controllers/Controle/Fornecedor/FornecedorController.php`
- [PPE inventory](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Epi/EpiController.php): `app/Http/Controllers/Controle/Epi/EpiController.php`
- [PPE distribution](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioEpiController.php): `app/Http/Controllers/Controle/Funcionario/FuncionarioEpiController.php`
- [Worker training](https://github.com/drmsugano/tcc-v2/blob/master/app/Http/Controllers/Controle/Funcionario/FuncionarioTreinamentoController.php): `app/Http/Controllers/Controle/Funcionario/FuncionarioTreinamentoController.php`
- [Domain records](https://github.com/drmsugano/tcc-v2/tree/master/app/Models): `app/Models`

### CA Lookup API

- [CA API entry](https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/main.py): `API_BaseCAEPI/app/main.py`
- [Certificate routes](https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/routers/certificadoApovacao.py): `API_BaseCAEPI/app/routers/certificadoApovacao.py`
- [CA service](https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/Services/CAService.py): `API_BaseCAEPI/app/Services/CAService.py`
- [CA data helper](https://github.com/drmsugano/tcc-v2/blob/master/API_BaseCAEPI/app/Services/BaseDadosCaEPI.py): `API_BaseCAEPI/app/Services/BaseDadosCaEPI.py`
- [API request models](https://github.com/drmsugano/tcc-v2/tree/master/API_BaseCAEPI/app/models): `API_BaseCAEPI/app/models`

### Other components

- **Web user**
- **API client**

## Connections

- Web user → Web routes: sends request (evidence: `routes/web.php`)
- Web routes → Request middleware: applies middleware (evidence: `bootstrap/app.php`)
- Web routes → Authentication: routes to (evidence: `routes/web.php`)
- Web routes → Home and control: routes to (evidence: `routes/web.php`)
- Web routes → Company administration: routes to (evidence: `routes/web.php`)
- Web routes → User administration: routes to (evidence: `routes/web.php`)
- Web routes → Works management: routes to (evidence: `routes/web.php`)
- Web routes → Work documentation: routes to (evidence: `routes/web.php`)
- Web routes → Employee management: routes to (evidence: `routes/web.php`)
- Web routes → Work assignments: routes to (evidence: `routes/web.php`)
- Web routes → Supplier management: routes to (evidence: `routes/web.php`)
- Web routes → PPE inventory: routes to (evidence: `routes/web.php`)
- Web routes → PPE distribution: routes to (evidence: `routes/web.php`)
- Web routes → Worker training: routes to (evidence: `routes/web.php`)
- Company administration → Company model: queries (evidence: `app/Http/Controllers/Admin/AdminController.php`)
- Company administration → Domain records: queries (evidence: `app/Http/Controllers/Admin/AdminController.php`)
- User administration → Company model: queries (evidence: `app/Http/Controllers/Admin/UsuarioController.php`)
- User administration → User and permissions: queries (evidence: `app/Http/Controllers/Admin/UsuarioController.php`)
- User administration → Domain records: queries permissions (evidence: `app/Http/Controllers/Admin/UsuarioController.php`)
- Authentication → User and permissions: authenticates (evidence: `app/Http/Controllers/Auth/AuthController.php`)
- Employee management → Employee model: queries (evidence: `app/Http/Controllers/Controle/Funcionario/FuncionarioController.php`)
- Works management → Employee model: loads workers (evidence: `app/Http/Controllers/Obras/ObrasController.php`)
- Works management → Domain records: checks documentation (evidence: `app/Http/Controllers/Obras/ObrasController.php`)
- Work assignments → Employee model: queries (evidence: `app/Http/Controllers/Controle/Funcionario/FuncionarioObraController.php`)
- Work documentation → Domain records: queries records (evidence: `app/Http/Controllers/Obras/DocumentacaoObraController.php`)
- Supplier management → Domain records: queries records (evidence: `app/Http/Controllers/Controle/Fornecedor/FornecedorController.php`)
- PPE inventory → Domain records: queries records (evidence: `app/Http/Controllers/Controle/Epi/EpiController.php`)
- PPE distribution → Employee model: loads worker (evidence: `app/Http/Controllers/Controle/Funcionario/FuncionarioEpiController.php`)
- PPE distribution → Domain records: queries PPE records (evidence: `app/Http/Controllers/Controle/Funcionario/FuncionarioEpiController.php`)
- Worker training → Domain records: queries records (evidence: `app/Http/Controllers/Controle/Funcionario/FuncionarioTreinamentoController.php`)
- Domain records → Application database: persists records
- API client → CA API entry: requests service
- CA API entry → Certificate routes: registers router (evidence: `API_BaseCAEPI/app/main.py`)
- Certificate routes → CA service: calls service (evidence: `API_BaseCAEPI/app/routers/certificadoApovacao.py`)
- Certificate routes → API request models: uses request models (evidence: `API_BaseCAEPI/app/routers/certificadoApovacao.py`)
- CA service → CA data helper: uses data helper (evidence: `API_BaseCAEPI/app/Services/CAService.py`)
