# lucas92robles-lab/proyecto-final architecture

> Architecture diagram of the GitHub repository lucas92robles-lab/proyecto-final, 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/lucas92robles-lab/proyecto-final
- Repository: https://github.com/lucas92robles-lab/proyecto-final

## Overview

This is a Jakarta EE web application for cataloging aerospace equipment and its technical specifications. The primary workflow is a user submitting catalog requests, which the controller delegates to MedioService for retrieval or persistence; results are represented as DTOs and presented through JSP views. Separate branches cover authentication and user administration, catalog summaries, and image handling. The README documents the MVC and JPA/PostgreSQL architecture; edges to those layers reflect that documentation. Some controllers and views were not sampled, so their detailed wiring is not inferred.

Main entry points: [`src/main/webapp/WEB-INF/views`](https://github.com/lucas92robles-lab/proyecto-final/tree/main/src/main/webapp/WEB-INF/views) (JSP views), [`src/main/java/org/lito/jakarta/service/MedioService.java`](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/MedioService.java) (Equipment service), [`src/main/java/org/lito/jakarta/controller/AuthController.java`](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/AuthController.java) (Authentication controller), [`src/main/java/org/lito/jakarta/controller/AdminController.java`](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/AdminController.java) (Admin controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_medio_controller["Equipment controller"]
  node_auth_controller["Authentication controller"]
  node_admin_controller["Admin controller"]
  node_dashboard_controller["Dashboard controller"]
  node_catalog_controllers["Reference catalog controllers"]
  node_image_controller["Image controller"]
  node_jsp_views["JSP views"]
end

subgraph group_services["Application services"]
  node_medio_service["Equipment service<br/>[MedioService.java]"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_admin_service["User administration<br/>[AdminService.java]"]
  node_dashboard_service["Dashboard metrics"]
  node_session["User session"]
end

subgraph group_domain["Catalog domain"]
  node_medio_dto["Equipment DTOs"]
  node_medio["Equipment entity<br/>[Medio.java]"]
  node_specifications["Technical specifications"]
  node_user_entity["User entity<br/>[Usuario.java]"]
end

subgraph group_persistence["Persistence"]
  node_postgres[("PostgreSQL database")]
end

node_user(("Catalog user"))

node_user -->|"submits requests"| node_medio_controller
node_medio_controller -->|"delegates catalog work"| node_medio_service
node_medio_service -->|"maps results"| node_medio_dto
node_medio_service -->|"reads and saves"| node_medio
node_medio_service -->|"loads and updates"| node_specifications
node_medio_controller -->|"routes to views"| node_jsp_views
node_auth_controller -->|"delegates authentication"| node_auth_service
node_auth_service -->|"queries and registers"| node_user_entity
node_auth_controller -->|"uses session state"| node_session
node_auth_controller -->|"routes to views"| node_jsp_views
node_admin_controller -->|"delegates user management"| node_admin_service
node_admin_service -->|"manages users"| node_user_entity
node_admin_controller -->|"uses session state"| node_session
node_admin_controller -->|"routes to views"| node_jsp_views
node_dashboard_controller -->|"requests metrics"| node_dashboard_service
node_dashboard_service -->|"counts catalog records"| node_medio
node_dashboard_controller -->|"routes to views"| node_jsp_views
node_catalog_controllers -->|"routes to views"| node_jsp_views
node_image_controller -.->|"serves image requests"| node_jsp_views
node_medio_service -->|"persists through JPA"| node_postgres
node_auth_service -->|"queries through JPA"| node_postgres
node_admin_service -->|"manages through JPA"| node_postgres
node_dashboard_service -->|"queries through JPA"| node_postgres

click node_medio_controller "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/MedioController.java"
click node_auth_controller "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/AuthController.java"
click node_admin_controller "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/AdminController.java"
click node_dashboard_controller "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/DashboardController.java"
click node_catalog_controllers "https://github.com/lucas92robles-lab/proyecto-final/tree/main/src/main/java/org/lito/jakarta/controller"
click node_image_controller "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/ImagenController.java"
click node_jsp_views "https://github.com/lucas92robles-lab/proyecto-final/tree/main/src/main/webapp/WEB-INF/views"
click node_medio_service "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/MedioService.java"
click node_auth_service "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/AuthService.java"
click node_admin_service "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/AdminService.java"
click node_dashboard_service "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/DashboardService.java"
click node_session "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/session/UsuarioSession.java"
click node_medio_dto "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/dto/MedioDetalleDTO.java"
click node_medio "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/model/Medio.java"
click node_specifications "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/model/EspecificacionesAereo.java"
click node_user_entity "https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/model/Usuario.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_medio_controller,node_auth_controller,node_admin_controller,node_dashboard_controller,node_catalog_controllers,node_image_controller,node_jsp_views,node_user toneBlue
class node_medio_service,node_auth_service,node_admin_service,node_dashboard_service,node_session toneAmber
class node_medio_dto,node_medio,node_specifications,node_user_entity toneMint
class node_postgres toneRose
```

## Components

### Web interface

- [Equipment controller](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/MedioController.java): `src/main/java/org/lito/jakarta/controller/MedioController.java`
- [Authentication controller](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/AuthController.java): `src/main/java/org/lito/jakarta/controller/AuthController.java`
- [Admin controller](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/AdminController.java): `src/main/java/org/lito/jakarta/controller/AdminController.java`
- [Dashboard controller](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/DashboardController.java): `src/main/java/org/lito/jakarta/controller/DashboardController.java`
- [Reference catalog controllers](https://github.com/lucas92robles-lab/proyecto-final/tree/main/src/main/java/org/lito/jakarta/controller): `src/main/java/org/lito/jakarta/controller`
- [Image controller](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/controller/ImagenController.java): `src/main/java/org/lito/jakarta/controller/ImagenController.java`
- [JSP views](https://github.com/lucas92robles-lab/proyecto-final/tree/main/src/main/webapp/WEB-INF/views): `src/main/webapp/WEB-INF/views`

### Application services

- [Equipment service](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/MedioService.java): `src/main/java/org/lito/jakarta/service/MedioService.java`
- [Authentication service](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/AuthService.java): `src/main/java/org/lito/jakarta/service/AuthService.java`
- [User administration](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/AdminService.java): `src/main/java/org/lito/jakarta/service/AdminService.java`
- [Dashboard metrics](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/service/DashboardService.java): `src/main/java/org/lito/jakarta/service/DashboardService.java`
- [User session](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/session/UsuarioSession.java): `src/main/java/org/lito/jakarta/session/UsuarioSession.java`

### Catalog domain

- [Equipment DTOs](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/dto/MedioDetalleDTO.java): `src/main/java/org/lito/jakarta/dto/MedioDetalleDTO.java`
- [Equipment entity](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/model/Medio.java): `src/main/java/org/lito/jakarta/model/Medio.java`
- [Technical specifications](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/model/EspecificacionesAereo.java): `src/main/java/org/lito/jakarta/model/EspecificacionesAereo.java`
- [User entity](https://github.com/lucas92robles-lab/proyecto-final/blob/main/src/main/java/org/lito/jakarta/model/Usuario.java): `src/main/java/org/lito/jakarta/model/Usuario.java`

### Persistence

- **PostgreSQL database**

### Other components

- **Catalog user**

## Connections

- Catalog user → Equipment controller: submits requests (evidence: `README.md`)
- Equipment controller → Equipment service: delegates catalog work (evidence: `src/main/java/org/lito/jakarta/controller/MedioController.java`)
- Equipment service → Equipment DTOs: maps results (evidence: `src/main/java/org/lito/jakarta/service/MedioService.java`)
- Equipment service → Equipment entity: reads and saves (evidence: `src/main/java/org/lito/jakarta/service/MedioService.java`)
- Equipment service → Technical specifications: loads and updates (evidence: `src/main/java/org/lito/jakarta/service/MedioService.java`)
- Equipment controller → JSP views: routes to views (evidence: `README.md`)
- Authentication controller → Authentication service: delegates authentication (evidence: `src/main/java/org/lito/jakarta/controller/AuthController.java`)
- Authentication service → User entity: queries and registers (evidence: `src/main/java/org/lito/jakarta/service/AuthService.java`)
- Authentication controller → User session: uses session state (evidence: `src/main/java/org/lito/jakarta/controller/AuthController.java`)
- Authentication controller → JSP views: routes to views (evidence: `README.md`)
- Admin controller → User administration: delegates user management (evidence: `src/main/java/org/lito/jakarta/controller/AdminController.java`)
- User administration → User entity: manages users (evidence: `src/main/java/org/lito/jakarta/service/AdminService.java`)
- Admin controller → User session: uses session state (evidence: `src/main/java/org/lito/jakarta/controller/AdminController.java`)
- Admin controller → JSP views: routes to views (evidence: `README.md`)
- Dashboard controller → Dashboard metrics: requests metrics (evidence: `src/main/java/org/lito/jakarta/controller/DashboardController.java`)
- Dashboard metrics → Equipment entity: counts catalog records (evidence: `src/main/java/org/lito/jakarta/service/DashboardService.java`)
- Dashboard controller → JSP views: routes to views (evidence: `README.md`)
- Reference catalog controllers → JSP views: routes to views (evidence: `README.md`)
- Image controller → JSP views: serves image requests
- Equipment service → PostgreSQL database: persists through JPA (evidence: `README.md`)
- Authentication service → PostgreSQL database: queries through JPA (evidence: `README.md`)
- User administration → PostgreSQL database: manages through JPA (evidence: `README.md`)
- Dashboard metrics → PostgreSQL database: queries through JPA (evidence: `README.md`)
