# jurandircod/frotas_municipal architecture

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

- Interactive diagram: https://gitdiagram.com/jurandircod/frotas_municipal
- Repository: https://github.com/jurandircod/frotas_municipal

## Overview

Este é um sistema Laravel de gestão de frota e de retirada de cartões, ferramentas e outros itens. O fluxo principal registra a saída de um veículo e sua movimentação, atualiza quilometragem e permite consultar movimentos e indicadores no dashboard. Um fluxo distinto solicita e autoriza retiradas e entregas. O mapa preserva também cadastros de frota, usuários e autenticação. Relações entre rotas, controladores, modelos e views só são ligadas quando aparecem nos trechos ou são documentadas; subsistemas não amostrados têm ligações limitadas ao que o índice e o README sustentam.

Main entry points: [`routes/web.php`](https://github.com/jurandircod/frotas_municipal/blob/main/routes/web.php) (Rotas web), [`app/Http/Controllers/Retiradas/RetiradaController.php`](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Retiradas/RetiradaController.php) (Solicitações e autorizações), [`app/Http/Controllers/DashboardController.php`](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/DashboardController.php) (Agregação do dashboard), [`app/Models/Retirada.php`](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Retirada.php) (Retirada)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entrada["Entrada e acesso"]
  node_rotas["Rotas web<br/>[web.php]"]
  node_rotas_auth["Rotas de autenticação<br/>[auth.php]"]
  node_registro["Registro de usuários"]
  node_sessao["Sessão de autenticação"]
  node_middleware["Controle de papel<br/>[CheckRole.php]"]
  node_base_controller["Controlador base<br/>[Controller.php]"]
end

subgraph group_frota["Frota e movimentos"]
  node_dashboard_controller["Agregação do dashboard"]
  node_mov_controller["Gestão de movimentações"]
  node_veiculo_controller["Gestão de veículos"]
  node_tipo_controller["Tipos de veículo"]
  node_user_controller["Gestão de motoristas<br/>[UserController.php]"]
  node_mov_model["Movimentação<br/>[Movimentacao.php]"]
  node_veiculo_model["Veículo<br/>[Veiculo.php]"]
  node_tipo_model["Tipo de veículo<br/>[TipoVeiculo.php]"]
  node_user_model["Conta de usuário<br/>[User.php]"]
end

subgraph group_retiradas["Retiradas e itens"]
  node_retirada_controller["Solicitações e autorizações"]
  node_cartao_controller["Gestão de cartões"]
  node_ferramenta_controller["Gestão de ferramentas"]
  node_retirada_model["Retirada<br/>[Retirada.php]"]
  node_cartao_model["Cartão<br/>[Cartao.php]"]
  node_ferramenta_model["Ferramenta<br/>[Ferramenta.php]"]
end

subgraph group_interface["Painéis e interface"]
  node_dashboard_view["Dashboard e gráficos"]
  node_layout["Layout principal<br/>[app.blade.php]"]
  node_mov_views["Views de movimentação"]
  node_veiculo_views["Views de veículos"]
  node_retirada_views["Views de retiradas"]
  node_cartao_views["Views de cartões"]
  node_ferramenta_view["View de ferramentas<br/>[index.blade.php]"]
  node_auth_views["Views de autenticação"]
end

node_usuario(("Usuário"))

node_usuario -->|"acessa"| node_rotas
node_rotas -->|"despacha"| node_dashboard_controller
node_rotas -->|"despacha"| node_mov_controller
node_rotas -->|"despacha"| node_veiculo_controller
node_rotas -->|"despacha"| node_tipo_controller
node_rotas -->|"despacha"| node_user_controller
node_rotas -->|"despacha"| node_retirada_controller
node_rotas -->|"despacha"| node_cartao_controller
node_rotas -->|"despacha"| node_ferramenta_controller
node_rotas_auth -->|"despacha"| node_sessao
node_rotas_auth -->|"despacha"| node_registro
node_registro -->|"cria conta"| node_user_model
node_registro -->|"exibe registro"| node_auth_views
node_dashboard_controller -->|"consulta"| node_mov_model
node_dashboard_controller -->|"consulta"| node_veiculo_model
node_dashboard_controller -->|"consulta"| node_tipo_model
node_dashboard_controller -->|"consulta"| node_user_model
node_dashboard_controller -->|"renderiza"| node_dashboard_view
node_mov_controller -->|"lê e grava"| node_mov_model
node_mov_controller -->|"atualiza km"| node_veiculo_model
node_mov_controller -->|"consulta"| node_user_model
node_mov_controller -->|"renderiza"| node_mov_views
node_veiculo_controller -->|"gerencia"| node_veiculo_model
node_veiculo_controller -->|"consulta"| node_tipo_model
node_retirada_controller -->|"cria e atualiza"| node_retirada_model
node_retirada_controller -->|"consulta"| node_cartao_model
node_retirada_controller -->|"consulta"| node_ferramenta_model
node_retirada_controller -->|"consulta"| node_user_model
node_retirada_controller -->|"renderiza"| node_retirada_views
node_retirada_controller -->|"renderiza"| node_cartao_views
node_cartao_controller -->|"gerencia"| node_cartao_model
node_ferramenta_controller -->|"gerencia"| node_ferramenta_model
node_cartao_model -->|"relaciona retiradas"| node_retirada_model
node_ferramenta_model -->|"relaciona retiradas"| node_retirada_model
node_retirada_model -->|"relaciona usuário"| node_user_model
node_retirada_model -->|"relaciona cartão"| node_cartao_model
node_retirada_model -->|"relaciona ferramenta"| node_ferramenta_model
node_veiculo_model -->|"relaciona tipo"| node_tipo_model
node_veiculo_model -->|"relaciona movimentos"| node_mov_model
node_mov_model -->|"relaciona veículo"| node_veiculo_model
node_mov_model -->|"relaciona usuário"| node_user_model
node_dashboard_view -.->|"usa layout"| node_layout
node_veiculo_controller -.->|"gerencia telas"| node_veiculo_views
node_usuario -->|"autentica"| node_rotas_auth

click node_rotas "https://github.com/jurandircod/frotas_municipal/blob/main/routes/web.php"
click node_rotas_auth "https://github.com/jurandircod/frotas_municipal/blob/main/routes/auth.php"
click node_registro "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php"
click node_sessao "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_middleware "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Middleware/CheckRole.php"
click node_base_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Controller.php"
click node_dashboard_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/DashboardController.php"
click node_mov_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/MovimentacaoController.php"
click node_veiculo_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/VeiculoController.php"
click node_tipo_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/TipoVeiculoController.php"
click node_user_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/UserController.php"
click node_mov_model "https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Movimentacao.php"
click node_veiculo_model "https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Veiculo.php"
click node_tipo_model "https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/TipoVeiculo.php"
click node_user_model "https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/User.php"
click node_retirada_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Retiradas/RetiradaController.php"
click node_cartao_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Retiradas/CartaoController.php"
click node_ferramenta_controller "https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Retiradas/FerramentasController.php"
click node_retirada_model "https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Retirada.php"
click node_cartao_model "https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Cartao.php"
click node_ferramenta_model "https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Ferramenta.php"
click node_dashboard_view "https://github.com/jurandircod/frotas_municipal/blob/main/resources/views/dashboard.blade.php"
click node_layout "https://github.com/jurandircod/frotas_municipal/blob/main/resources/views/layouts/app.blade.php"
click node_mov_views "https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/movimentacao"
click node_veiculo_views "https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/veiculo"
click node_retirada_views "https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/retirada"
click node_cartao_views "https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/cartao"
click node_ferramenta_view "https://github.com/jurandircod/frotas_municipal/blob/main/resources/views/ferramenta/index.blade.php"
click node_auth_views "https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/auth"

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_rotas,node_rotas_auth,node_registro,node_sessao,node_middleware,node_base_controller toneBlue
class node_dashboard_controller,node_mov_controller,node_veiculo_controller,node_tipo_controller,node_user_controller,node_mov_model,node_veiculo_model,node_tipo_model,node_user_model toneAmber
class node_retirada_controller,node_cartao_controller,node_ferramenta_controller,node_retirada_model,node_cartao_model,node_ferramenta_model toneMint
class node_dashboard_view,node_layout,node_mov_views,node_veiculo_views,node_retirada_views,node_cartao_views,node_ferramenta_view,node_auth_views toneRose
class node_usuario toneIndigo
```

## Components

### Entrada e acesso

- [Rotas web](https://github.com/jurandircod/frotas_municipal/blob/main/routes/web.php): `routes/web.php`
- [Rotas de autenticação](https://github.com/jurandircod/frotas_municipal/blob/main/routes/auth.php): `routes/auth.php`
- [Registro de usuários](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php): `app/Http/Controllers/Auth/RegisteredUserController.php`
- [Sessão de autenticação](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Controle de papel](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Middleware/CheckRole.php): `app/Http/Middleware/CheckRole.php`
- [Controlador base](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Controller.php): `app/Http/Controllers/Controller.php`

### Frota e movimentos

- [Agregação do dashboard](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Gestão de movimentações](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/MovimentacaoController.php): `app/Http/Controllers/MovimentacaoController.php`
- [Gestão de veículos](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/VeiculoController.php): `app/Http/Controllers/VeiculoController.php`
- [Tipos de veículo](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/TipoVeiculoController.php): `app/Http/Controllers/TipoVeiculoController.php`
- [Gestão de motoristas](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/UserController.php): `app/Http/Controllers/UserController.php`
- [Movimentação](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Movimentacao.php): `app/Models/Movimentacao.php`
- [Veículo](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Veiculo.php): `app/Models/Veiculo.php`
- [Tipo de veículo](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/TipoVeiculo.php): `app/Models/TipoVeiculo.php`
- [Conta de usuário](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/User.php): `app/Models/User.php`

### Retiradas e itens

- [Solicitações e autorizações](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Retiradas/RetiradaController.php): `app/Http/Controllers/Retiradas/RetiradaController.php`
- [Gestão de cartões](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Retiradas/CartaoController.php): `app/Http/Controllers/Retiradas/CartaoController.php`
- [Gestão de ferramentas](https://github.com/jurandircod/frotas_municipal/blob/main/app/Http/Controllers/Retiradas/FerramentasController.php): `app/Http/Controllers/Retiradas/FerramentasController.php`
- [Retirada](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Retirada.php): `app/Models/Retirada.php`
- [Cartão](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Cartao.php): `app/Models/Cartao.php`
- [Ferramenta](https://github.com/jurandircod/frotas_municipal/blob/main/app/Models/Ferramenta.php): `app/Models/Ferramenta.php`

### Painéis e interface

- [Dashboard e gráficos](https://github.com/jurandircod/frotas_municipal/blob/main/resources/views/dashboard.blade.php): `resources/views/dashboard.blade.php`
- [Layout principal](https://github.com/jurandircod/frotas_municipal/blob/main/resources/views/layouts/app.blade.php): `resources/views/layouts/app.blade.php`
- [Views de movimentação](https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/movimentacao): `resources/views/movimentacao`
- [Views de veículos](https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/veiculo): `resources/views/veiculo`
- [Views de retiradas](https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/retirada): `resources/views/retirada`
- [Views de cartões](https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/cartao): `resources/views/cartao`
- [View de ferramentas](https://github.com/jurandircod/frotas_municipal/blob/main/resources/views/ferramenta/index.blade.php): `resources/views/ferramenta/index.blade.php`
- [Views de autenticação](https://github.com/jurandircod/frotas_municipal/tree/main/resources/views/auth): `resources/views/auth`

### Other components

- **Usuário**

## Connections

- Usuário → Rotas web: acessa (evidence: `routes/web.php`)
- Rotas web → Agregação do dashboard: despacha (evidence: `routes/web.php`)
- Rotas web → Gestão de movimentações: despacha (evidence: `routes/web.php`)
- Rotas web → Gestão de veículos: despacha (evidence: `routes/web.php`)
- Rotas web → Tipos de veículo: despacha (evidence: `routes/web.php`)
- Rotas web → Gestão de motoristas: despacha (evidence: `routes/web.php`)
- Rotas web → Solicitações e autorizações: despacha (evidence: `routes/web.php`)
- Rotas web → Gestão de cartões: despacha (evidence: `routes/web.php`)
- Rotas web → Gestão de ferramentas: despacha (evidence: `routes/web.php`)
- Rotas de autenticação → Sessão de autenticação: despacha (evidence: `routes/auth.php`)
- Rotas de autenticação → Registro de usuários: despacha (evidence: `routes/auth.php`)
- Registro de usuários → Conta de usuário: cria conta (evidence: `app/Http/Controllers/Auth/RegisteredUserController.php`)
- Registro de usuários → Views de autenticação: exibe registro (evidence: `app/Http/Controllers/Auth/RegisteredUserController.php`)
- Agregação do dashboard → Movimentação: consulta (evidence: `app/Http/Controllers/DashboardController.php`)
- Agregação do dashboard → Veículo: consulta (evidence: `app/Http/Controllers/DashboardController.php`)
- Agregação do dashboard → Tipo de veículo: consulta (evidence: `app/Http/Controllers/DashboardController.php`)
- Agregação do dashboard → Conta de usuário: consulta (evidence: `app/Http/Controllers/DashboardController.php`)
- Agregação do dashboard → Dashboard e gráficos: renderiza (evidence: `app/Http/Controllers/DashboardController.php`)
- Gestão de movimentações → Movimentação: lê e grava (evidence: `app/Http/Controllers/MovimentacaoController.php`)
- Gestão de movimentações → Veículo: atualiza km (evidence: `app/Http/Controllers/MovimentacaoController.php`)
- Gestão de movimentações → Conta de usuário: consulta (evidence: `app/Http/Controllers/MovimentacaoController.php`)
- Gestão de movimentações → Views de movimentação: renderiza (evidence: `app/Http/Controllers/MovimentacaoController.php`)
- Gestão de veículos → Veículo: gerencia (evidence: `app/Http/Controllers/VeiculoController.php`)
- Gestão de veículos → Tipo de veículo: consulta (evidence: `app/Http/Controllers/VeiculoController.php`)
- Solicitações e autorizações → Retirada: cria e atualiza (evidence: `app/Http/Controllers/Retiradas/RetiradaController.php`)
- Solicitações e autorizações → Cartão: consulta (evidence: `app/Http/Controllers/Retiradas/RetiradaController.php`)
- Solicitações e autorizações → Ferramenta: consulta (evidence: `app/Http/Controllers/Retiradas/RetiradaController.php`)
- Solicitações e autorizações → Conta de usuário: consulta (evidence: `app/Http/Controllers/Retiradas/RetiradaController.php`)
- Solicitações e autorizações → Views de retiradas: renderiza (evidence: `app/Http/Controllers/Retiradas/RetiradaController.php`)
- Solicitações e autorizações → Views de cartões: renderiza (evidence: `app/Http/Controllers/Retiradas/RetiradaController.php`)
- Gestão de cartões → Cartão: gerencia (evidence: `app/Http/Controllers/Retiradas/CartaoController.php`)
- Gestão de ferramentas → Ferramenta: gerencia (evidence: `app/Http/Controllers/Retiradas/FerramentasController.php`)
- Cartão → Retirada: relaciona retiradas (evidence: `app/Models/Cartao.php`)
- Ferramenta → Retirada: relaciona retiradas (evidence: `app/Models/Ferramenta.php`)
- Retirada → Conta de usuário: relaciona usuário (evidence: `app/Models/Retirada.php`)
- Retirada → Cartão: relaciona cartão (evidence: `app/Models/Retirada.php`)
- Retirada → Ferramenta: relaciona ferramenta (evidence: `app/Models/Retirada.php`)
- Veículo → Tipo de veículo: relaciona tipo (evidence: `app/Models/Veiculo.php`)
- Veículo → Movimentação: relaciona movimentos (evidence: `app/Models/Veiculo.php`)
- Movimentação → Veículo: relaciona veículo (evidence: `app/Models/Movimentacao.php`)
- Movimentação → Conta de usuário: relaciona usuário (evidence: `app/Models/Movimentacao.php`)
- Dashboard e gráficos → Layout principal: usa layout
- Gestão de veículos → Views de veículos: gerencia telas
- Usuário → Rotas de autenticação: autentica (evidence: `routes/auth.php`)
