# lerida125/fletes_y_mudanzas_ppp_trabajo_practico architecture

> Architecture diagram of the GitHub repository lerida125/fletes_y_mudanzas_ppp_trabajo_practico, 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/lerida125/fletes_y_mudanzas_ppp_trabajo_practico
- Repository: https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico

## Overview

Fletes y Mudanzas Express es una aplicación web para administrar operaciones de fletes: clientes, personal y flota, agenda y servicios, cotizaciones, y rendiciones/pagos. El flujo principal es que personal administrativo gestiona los datos y agenda servicios; el sistema expone esos casos de uso mediante la API y los persiste. El README documenta capas desacopladas y capacidades de migración histórica. Las relaciones de capas se apoyan en esa documentación; los vínculos específicos entre módulos no muestreados se omiten cuando no hay evidencia visible.

Main entry points: [`backend/app/main.py`](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/main.py) (API REST), [`backend/app/application/clientes/gestor_clientes.py`](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/clientes/gestor_clientes.py) (Clientes), [`backend/app/application/servicios/gestor_servicios.py`](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/servicios/gestor_servicios.py) (Servicios y agenda), [`frontend/src/app`](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/frontend/src/app) (Interfaz web)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Presentación y acceso"]
  node_web["Interfaz web"]
  node_auth_ui["Inicio de sesión"]
  node_api["API REST<br/>[main.py]"]
  node_auth["Autenticación JWT"]
end

subgraph group_operations["Operación logística"]
  node_customers["Clientes<br/>[gestor_clientes.py]"]
  node_drivers["Choferes<br/>[gestor_choferes.py]"]
  node_fleet_types["Tipos de vehículo"]
  node_fleet["Vehículos"]
  node_services["Servicios y agenda"]
  node_maps["Direcciones y rutas<br/>[gestor_mapas.py]"]
end

subgraph group_business["Reglas de negocio"]
  node_quoting["Cotizaciones<br/>[calculadora.py]"]
  node_settlements["Rendiciones"]
  node_domain["Entidades y reglas"]
end

subgraph group_infrastructure["Persistencia e integraciones"]
  node_database[("Base de datos<br/>[session.py]")]
  node_repositories["Repositorios"]
  node_map_client["Cliente de mapas<br/>[mapas_client.py]"]
  node_mapping_services["Nominatim y OSRM"]
end

subgraph group_migration["Migración histórica"]
  node_historical_migration["Migración de datos"]
end

node_admin(("Personal administrativo"))
node_driver(("Chofer"))

node_admin -.->|"usa"| node_web
node_driver -.->|"usa"| node_web
node_web -.->|"incluye"| node_auth_ui
node_admin -.->|"gestiona operaciones"| node_api
node_driver -.->|"consulta servicios"| node_api
node_api -->|"delega autenticación"| node_auth
node_api -->|"delega clientes"| node_customers
node_api -->|"delega choferes"| node_drivers
node_api -->|"delega catálogo"| node_fleet_types
node_api -->|"delega flota"| node_fleet
node_api -->|"delega servicios"| node_services
node_api -->|"delega mapas"| node_maps
node_api -->|"delega rendiciones"| node_settlements
node_customers -->|"aplica invariantes"| node_domain
node_customers -.->|"persiste vía puerto"| node_repositories
node_repositories -.->|"lee y escribe"| node_database
node_maps -.->|"consulta rutas"| node_map_client
node_map_client -->|"solicita geodatos"| node_mapping_services
node_services -.->|"cotiza servicio"| node_quoting
node_services -.->|"habilita rendición"| node_settlements
node_historical_migration -.->|"consolida datos"| node_database

click node_web "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/frontend/src/app"
click node_auth_ui "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/frontend/src/features/auth"
click node_api "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/main.py"
click node_auth "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/autenticacion/gestor_autenticacion.py"
click node_customers "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/clientes/gestor_clientes.py"
click node_drivers "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/choferes/gestor_choferes.py"
click node_fleet_types "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/tipos_vehiculo/gestor_tipos_vehiculo.py"
click node_fleet "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/vehiculos/gestor_vehiculos.py"
click node_services "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/servicios/gestor_servicios.py"
click node_maps "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/mapas/gestor_mapas.py"
click node_quoting "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/cotizacion/calculadora.py"
click node_settlements "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/rendiciones/gestor_rendiciones.py"
click node_domain "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/backend/app/domain"
click node_database "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/infrastructure/db/session.py"
click node_repositories "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/backend/app/infrastructure/repositories"
click node_map_client "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/infrastructure/maps/mapas_client.py"
click node_historical_migration "https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/backend/scripts/migracion"

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_web,node_auth_ui,node_api,node_auth toneBlue
class node_customers,node_drivers,node_fleet_types,node_fleet,node_services,node_maps toneAmber
class node_quoting,node_settlements,node_domain toneMint
class node_database,node_repositories,node_map_client,node_mapping_services toneRose
class node_historical_migration,node_admin,node_driver toneIndigo
```

## Components

### Presentación y acceso

- [Interfaz web](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/frontend/src/app): `frontend/src/app`
- [Inicio de sesión](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/frontend/src/features/auth): `frontend/src/features/auth`
- [API REST](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/main.py): `backend/app/main.py`
- [Autenticación JWT](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/autenticacion/gestor_autenticacion.py): `backend/app/application/autenticacion/gestor_autenticacion.py`

### Operación logística

- [Clientes](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/clientes/gestor_clientes.py): `backend/app/application/clientes/gestor_clientes.py`
- [Choferes](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/choferes/gestor_choferes.py): `backend/app/application/choferes/gestor_choferes.py`
- [Tipos de vehículo](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/tipos_vehiculo/gestor_tipos_vehiculo.py): `backend/app/application/tipos_vehiculo/gestor_tipos_vehiculo.py`
- [Vehículos](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/vehiculos/gestor_vehiculos.py): `backend/app/application/vehiculos/gestor_vehiculos.py`
- [Servicios y agenda](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/servicios/gestor_servicios.py): `backend/app/application/servicios/gestor_servicios.py`
- [Direcciones y rutas](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/mapas/gestor_mapas.py): `backend/app/application/mapas/gestor_mapas.py`

### Reglas de negocio

- [Cotizaciones](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/cotizacion/calculadora.py): `backend/app/application/cotizacion/calculadora.py`
- [Rendiciones](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/application/rendiciones/gestor_rendiciones.py): `backend/app/application/rendiciones/gestor_rendiciones.py`
- [Entidades y reglas](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/backend/app/domain): `backend/app/domain`

### Persistencia e integraciones

- [Base de datos](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/infrastructure/db/session.py): `backend/app/infrastructure/db/session.py`
- [Repositorios](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/backend/app/infrastructure/repositories): `backend/app/infrastructure/repositories`
- [Cliente de mapas](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/blob/main/backend/app/infrastructure/maps/mapas_client.py): `backend/app/infrastructure/maps/mapas_client.py`
- **Nominatim y OSRM**

### Migración histórica

- [Migración de datos](https://github.com/lerida125/fletes_y_mudanzas_ppp_trabajo_practico/tree/main/backend/scripts/migracion): `backend/scripts/migracion`

### Other components

- **Personal administrativo**
- **Chofer**

## Connections

- Personal administrativo → Interfaz web: usa (evidence: `README.md`)
- Chofer → Interfaz web: usa (evidence: `README.md`)
- Interfaz web → Inicio de sesión: incluye
- Personal administrativo → API REST: gestiona operaciones (evidence: `README.md`)
- Chofer → API REST: consulta servicios (evidence: `README.md`)
- API REST → Autenticación JWT: delega autenticación
- API REST → Clientes: delega clientes
- API REST → Choferes: delega choferes
- API REST → Tipos de vehículo: delega catálogo
- API REST → Vehículos: delega flota
- API REST → Servicios y agenda: delega servicios
- API REST → Direcciones y rutas: delega mapas
- API REST → Rendiciones: delega rendiciones
- Clientes → Entidades y reglas: aplica invariantes (evidence: `backend/app/application/clientes/gestor_clientes.py`)
- Clientes → Repositorios: persiste vía puerto
- Repositorios → Base de datos: lee y escribe
- Direcciones y rutas → Cliente de mapas: consulta rutas
- Cliente de mapas → Nominatim y OSRM: solicita geodatos (evidence: `backend/app/infrastructure/maps/mapas_client.py`)
- Servicios y agenda → Cotizaciones: cotiza servicio
- Servicios y agenda → Rendiciones: habilita rendición
- Migración de datos → Base de datos: consolida datos (evidence: `README.md`)
