# leo-cata/poo-isfpp architecture

> Architecture diagram of the GitHub repository leo-cata/poo-isfpp, 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/leo-cata/poo-isfpp
- Repository: https://github.com/leo-cata/poo-isfpp

## Overview

This Java application implements a ride-hailing workflow: users interact through CLI or JavaFX, request and manage trips, and receive route calculations from a routing engine. The application context initializes shared services and loads initial data. The tree and excerpts also show persistence backends, trip simulation, and map visualization as distinct capabilities. Several connections are omitted or marked unverified because their implementing source was not excerpted; the README provides no capability details.

Main entry points: [`src/main/java/md/aplicacion/ContextoAplicacion.java`](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/aplicacion/ContextoAplicacion.java) (Application context), [`src/main/java/md/logica/GestorViajes.java`](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/logica/GestorViajes.java) (Trip management), [`src/main/java/md/ui/impl/javafx/controller/PanelClienteController.java`](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/controller/PanelClienteController.java) (Client panel), [`src/main/java/md/datos/dao/DAOFactory.java`](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/datos/dao/DAOFactory.java) (DAO factory and contracts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User interfaces"]
  node_cli["Command-line UI"]
  node_login["Login screen"]
  node_clientui["Client panel"]
  node_driverui["Driver panel"]
  node_mapview["Route map"]
end

subgraph group_app["Application and trips"]
  node_context["Application context"]
  node_loader["Initial data loader"]
  node_trips["Trip management<br/>[GestorViajes.java]"]
  node_mobility["Driver selection<br/>[Movilidad.java]"]
  node_tripmodel["Trip lifecycle<br/>[Viaje.java]"]
end

subgraph group_routing["Routing and maps"]
  node_tripplanning["Trip route planning"]
  node_routeapi["Routing contract"]
  node_routeengine["GraphHopper engine"]
  node_routepairs["Trip route results<br/>[RutasViaje.java]"]
  node_routevalue["Calculated route<br/>[RutaCalculada.java]"]
end

subgraph group_persistence["Persistence"]
  node_dao["DAO factory and contracts<br/>[DAOFactory.java]"]
  node_dbbackend["Database persistence"]
  node_txtbackend["Text-file persistence"]
end

subgraph group_simulation["Simulation"]
  node_simulation["Ride simulation<br/>[Despachador.java]"]
  node_stats["Simulation statistics<br/>[Estadisticas.java]"]
end

node_rider(("User"))

node_rider -->|"uses"| node_cli
node_rider -->|"uses"| node_login
node_rider -->|"uses"| node_clientui
node_rider -->|"uses"| node_driverui
node_cli -->|"accesses"| node_context
node_login -->|"accesses"| node_context
node_clientui -->|"accesses"| node_context
node_driverui -->|"accesses"| node_context
node_clientui -->|"renders routes"| node_mapview
node_context -->|"loads data"| node_loader
node_context -->|"accepts persistence"| node_dao
node_context -->|"initializes"| node_trips
node_trips -->|"selects driver"| node_mobility
node_trips -.->|"manages trips"| node_tripmodel
node_dao -.->|"selects backend"| node_dbbackend
node_dao -.->|"selects backend"| node_txtbackend
node_tripplanning -->|"calculates legs"| node_routeapi
node_routeengine -->|"implements"| node_routeapi
node_tripplanning -->|"returns"| node_routepairs
node_routepairs -.->|"groups routes"| node_routevalue
node_context -->|"creates via factory"| node_routeengine
node_simulation -.->|"uses trip manager"| node_trips
node_simulation -.->|"records statistics"| node_stats

click node_cli "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/cli/CommandLineInterface.java"
click node_login "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/controller/LoginController.java"
click node_clientui "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/controller/PanelClienteController.java"
click node_driverui "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/controller/PanelConductorController.java"
click node_mapview "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/map/VisualizadorRutasLeaflet.java"
click node_context "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/aplicacion/ContextoAplicacion.java"
click node_loader "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/aplicacion/CargadorModelo.java"
click node_trips "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/logica/GestorViajes.java"
click node_mobility "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/logica/Movilidad.java"
click node_tripmodel "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/modelo/Viaje.java"
click node_tripplanning "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/logica/PlanificacionViajeService.java"
click node_routeapi "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/api/PlanificadorRutas.java"
click node_routeengine "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/impl/GraphHopperPlanificador.java"
click node_routepairs "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/api/RutasViaje.java"
click node_routevalue "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/api/RutaCalculada.java"
click node_dao "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/datos/dao/DAOFactory.java"
click node_dbbackend "https://github.com/leo-cata/poo-isfpp/tree/main/src/main/java/md/datos/dao/bd"
click node_txtbackend "https://github.com/leo-cata/poo-isfpp/tree/main/src/main/java/md/datos/dao/txt"
click node_simulation "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/simulacion/Despachador.java"
click node_stats "https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/simulacion/Estadisticas.java"

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_cli,node_login,node_clientui,node_driverui,node_mapview,node_rider toneBlue
class node_context,node_loader,node_trips,node_mobility,node_tripmodel toneAmber
class node_tripplanning,node_routeapi,node_routeengine,node_routepairs,node_routevalue toneMint
class node_dao,node_dbbackend,node_txtbackend toneRose
class node_simulation,node_stats toneIndigo
```

## Components

### User interfaces

- [Command-line UI](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/cli/CommandLineInterface.java): `src/main/java/md/ui/impl/cli/CommandLineInterface.java`
- [Login screen](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/controller/LoginController.java): `src/main/java/md/ui/impl/javafx/controller/LoginController.java`
- [Client panel](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/controller/PanelClienteController.java): `src/main/java/md/ui/impl/javafx/controller/PanelClienteController.java`
- [Driver panel](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/controller/PanelConductorController.java): `src/main/java/md/ui/impl/javafx/controller/PanelConductorController.java`
- [Route map](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/ui/impl/javafx/map/VisualizadorRutasLeaflet.java): `src/main/java/md/ui/impl/javafx/map/VisualizadorRutasLeaflet.java`

### Application and trips

- [Application context](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/aplicacion/ContextoAplicacion.java): `src/main/java/md/aplicacion/ContextoAplicacion.java`
- [Initial data loader](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/aplicacion/CargadorModelo.java): `src/main/java/md/aplicacion/CargadorModelo.java`
- [Trip management](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/logica/GestorViajes.java): `src/main/java/md/logica/GestorViajes.java`
- [Driver selection](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/logica/Movilidad.java): `src/main/java/md/logica/Movilidad.java`
- [Trip lifecycle](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/modelo/Viaje.java): `src/main/java/md/modelo/Viaje.java`

### Routing and maps

- [Trip route planning](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/logica/PlanificacionViajeService.java): `src/main/java/md/logica/PlanificacionViajeService.java`
- [Routing contract](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/api/PlanificadorRutas.java): `src/main/java/md/rutas/api/PlanificadorRutas.java`
- [GraphHopper engine](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/impl/GraphHopperPlanificador.java): `src/main/java/md/rutas/impl/GraphHopperPlanificador.java`
- [Trip route results](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/api/RutasViaje.java): `src/main/java/md/rutas/api/RutasViaje.java`
- [Calculated route](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/rutas/api/RutaCalculada.java): `src/main/java/md/rutas/api/RutaCalculada.java`

### Persistence

- [DAO factory and contracts](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/datos/dao/DAOFactory.java): `src/main/java/md/datos/dao/DAOFactory.java`
- [Database persistence](https://github.com/leo-cata/poo-isfpp/tree/main/src/main/java/md/datos/dao/bd): `src/main/java/md/datos/dao/bd`
- [Text-file persistence](https://github.com/leo-cata/poo-isfpp/tree/main/src/main/java/md/datos/dao/txt): `src/main/java/md/datos/dao/txt`

### Simulation

- [Ride simulation](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/simulacion/Despachador.java): `src/main/java/md/simulacion/Despachador.java`
- [Simulation statistics](https://github.com/leo-cata/poo-isfpp/blob/main/src/main/java/md/simulacion/Estadisticas.java): `src/main/java/md/simulacion/Estadisticas.java`

### Other components

- **User**

## Connections

- User → Command-line UI: uses
- User → Login screen: uses
- User → Client panel: uses
- User → Driver panel: uses
- Command-line UI → Application context: accesses (evidence: `src/main/java/md/ui/impl/cli/CommandLineInterface.java`)
- Login screen → Application context: accesses (evidence: `src/main/java/md/ui/impl/javafx/controller/LoginController.java`)
- Client panel → Application context: accesses (evidence: `src/main/java/md/ui/impl/javafx/controller/PanelClienteController.java`)
- Driver panel → Application context: accesses (evidence: `src/main/java/md/ui/impl/javafx/controller/PanelConductorController.java`)
- Client panel → Route map: renders routes (evidence: `src/main/java/md/ui/impl/javafx/controller/PanelClienteController.java`)
- Application context → Initial data loader: loads data (evidence: `src/main/java/md/aplicacion/ContextoAplicacion.java`)
- Application context → DAO factory and contracts: accepts persistence (evidence: `src/main/java/md/aplicacion/ContextoAplicacion.java`)
- Application context → Trip management: initializes (evidence: `src/main/java/md/aplicacion/ContextoAplicacion.java`)
- Trip management → Driver selection: selects driver (evidence: `src/main/java/md/logica/GestorViajes.java`)
- Trip management → Trip lifecycle: manages trips (evidence: `src/main/java/md/logica/GestorViajes.java`)
- DAO factory and contracts → Database persistence: selects backend
- DAO factory and contracts → Text-file persistence: selects backend
- Trip route planning → Routing contract: calculates legs (evidence: `src/main/java/md/logica/PlanificacionViajeService.java`)
- GraphHopper engine → Routing contract: implements (evidence: `src/main/java/md/rutas/impl/GraphHopperPlanificador.java`)
- Trip route planning → Trip route results: returns (evidence: `src/main/java/md/logica/PlanificacionViajeService.java`)
- Trip route results → Calculated route: groups routes (evidence: `src/main/java/md/rutas/api/RutasViaje.java`)
- Application context → GraphHopper engine: creates via factory (evidence: `src/main/java/md/aplicacion/ContextoAplicacion.java`)
- Ride simulation → Trip management: uses trip manager (evidence: `src/main/java/md/simulacion/Despachador.java`)
- Ride simulation → Simulation statistics: records statistics (evidence: `src/main/java/md/simulacion/Despachador.java`)
