# sebastianseijasuy-maker/gestec-proyecto architecture

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

- Interactive diagram: https://gitdiagram.com/sebastianseijasuy-maker/gestec-proyecto
- Repository: https://github.com/sebastianseijasuy-maker/gestec-proyecto

## Overview

GesTec is a Java Swing desktop system for managing an educational institution’s technology inventory and its lending operations. The principal workflow is: an authorized operator signs in, opens the application’s functions, finds an eligible person and available resource, records a loan, and later registers its return. Other documented capabilities include resource and person administration, incidents, maintenance history, and user management. The graph combines README capabilities with source-index references and excerpts; unsampled modules are represented at their existing directory paths, and their internal calls are not inferred.

Main entry points: [`gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java`](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java) (Main screen), [`gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java`](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java) (Loans and returns), [`gestec/src/main/java/uy/edu/gestec/persistencia/ConexionBD.java`](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/ConexionBD.java) (JDBC connection), [`gestec/src/main/java/uy/edu/gestec/negocio/GestionPrestamo.java`](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionPrestamo.java) (Loan management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Desktop interface"]
  node_login["Sign in<br/>[Login.java]"]
  node_home["Main screen"]
  node_loan_ui["Loans and returns"]
  node_loan_consult["Loan queries"]
  node_resource_ui["Resource management"]
  node_person_ui["People management"]
  node_incident_ui["Incident intake"]
  node_maintenance_ui["Maintenance records"]
  node_maintenance_history["Maintenance history"]
  node_user_ui["User registration"]
end

subgraph group_business["Business domain"]
  node_loan_service["Loan management"]
  node_loan_model["Loan records<br/>[Prestamo.java]"]
  node_resource_service["Resource service"]
  node_person_service["Eligible people"]
  node_incident_service["Incident management"]
  node_maintenance_service["Maintenance management"]
  node_user_service["User authentication"]
  node_password_security["Password security"]
end

subgraph group_persistence["Data access"]
  node_loan_dao["Loan persistence<br/>[PrestamoDAO.java]"]
  node_person_dao["Eligible-person persistence"]
  node_resource_dao["Resource persistence"]
  node_user_dao["User persistence<br/>[UsuarioDAO.java]"]
  node_maintenance_dao["Maintenance persistence"]
  node_incident_dao["Incident persistence<br/>[IncidenciaDAO.java]"]
  node_jdbc["JDBC connection<br/>[ConexionBD.java]"]
end

subgraph group_external["External systems"]
  node_mysql[("MySQL database")]
end

node_operator(("Authorized operator"))

node_operator -->|"enters credentials"| node_login
node_login -->|"launches screen"| node_home
node_home -.->|"opens lending"| node_loan_ui
node_loan_ui -->|"submits loan"| node_loan_service
node_loan_ui -->|"looks up person"| node_person_service
node_loan_ui -->|"finds resources"| node_resource_service
node_loan_service -->|"checks eligibility"| node_person_dao
node_loan_service -->|"records loan"| node_loan_dao
node_loan_dao -->|"opens connection"| node_jdbc
node_jdbc -->|"connects via JDBC"| node_mysql
node_loan_consult -->|"queries loans"| node_loan_service
node_loan_ui -.->|"opens queries"| node_loan_consult
node_home -.->|"opens inventory"| node_resource_ui
node_resource_ui -->|"manages resources"| node_resource_service
node_resource_service -->|"persists changes"| node_resource_dao
node_home -.->|"opens people"| node_person_ui
node_person_ui -->|"manages people"| node_person_service
node_person_service -->|"persists people"| node_person_dao
node_home -.->|"opens incidents"| node_incident_ui
node_incident_ui -->|"registers incident"| node_incident_service
node_home -.->|"opens maintenance"| node_maintenance_ui
node_maintenance_ui -.->|"records service"| node_maintenance_service
node_maintenance_ui -.->|"stores records"| node_maintenance_dao
node_home -.->|"opens history"| node_maintenance_history
node_maintenance_history -->|"queries history"| node_maintenance_service
node_maintenance_dao -->|"opens connection"| node_jdbc
node_incident_dao -->|"opens connection"| node_jdbc
node_home -.->|"opens user setup"| node_user_ui
node_user_ui -->|"registers user"| node_user_service
node_login -.->|"authenticates"| node_user_service
node_user_service -->|"checks passwords"| node_password_security
node_user_service -->|"reads users"| node_user_dao
node_user_dao -->|"opens connection"| node_jdbc

click node_login "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/Login.java"
click node_home "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java"
click node_loan_ui "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java"
click node_loan_consult "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarPrestamos.java"
click node_resource_ui "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/GestionarRecurso.java"
click node_person_ui "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/GestionarPersona.java"
click node_incident_ui "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarIncidencia.java"
click node_maintenance_ui "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/GestionMantenimiento.java"
click node_maintenance_history "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarHistorialMantenimientos.java"
click node_user_ui "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarUsuario.java"
click node_loan_service "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionPrestamo.java"
click node_loan_model "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/Prestamo.java"
click node_resource_service "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/ServicioRecursoTecnologico.java"
click node_person_service "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionPersonaHabilitada.java"
click node_incident_service "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionIncidencia.java"
click node_maintenance_service "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/ServicioMantenimiento.java"
click node_user_service "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionUsuario.java"
click node_password_security "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/SeguridadContrasena.java"
click node_loan_dao "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/PrestamoDAO.java"
click node_person_dao "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/PersonaHabilitadaDAO.java"
click node_resource_dao "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/RecursoTecnologicoDAO.java"
click node_user_dao "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/UsuarioDAO.java"
click node_maintenance_dao "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/MantenimientoDAO.java"
click node_incident_dao "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/IncidenciaDAO.java"
click node_jdbc "https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/ConexionBD.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_login,node_home,node_loan_ui,node_loan_consult,node_resource_ui,node_person_ui,node_incident_ui,node_maintenance_ui,node_maintenance_history,node_user_ui toneBlue
class node_loan_service,node_loan_model,node_resource_service,node_person_service,node_incident_service,node_maintenance_service,node_user_service,node_password_security toneAmber
class node_loan_dao,node_person_dao,node_resource_dao,node_user_dao,node_maintenance_dao,node_incident_dao,node_jdbc toneMint
class node_mysql toneRose
class node_operator toneIndigo
```

## Components

### Desktop interface

- [Sign in](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/Login.java): `gestec/src/main/java/uy/edu/gestec/presentacion/Login.java`
- [Main screen](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java): `gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java`
- [Loans and returns](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java): `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java`
- [Loan queries](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarPrestamos.java): `gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarPrestamos.java`
- [Resource management](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/GestionarRecurso.java): `gestec/src/main/java/uy/edu/gestec/presentacion/GestionarRecurso.java`
- [People management](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/GestionarPersona.java): `gestec/src/main/java/uy/edu/gestec/presentacion/GestionarPersona.java`
- [Incident intake](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarIncidencia.java): `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarIncidencia.java`
- [Maintenance records](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/GestionMantenimiento.java): `gestec/src/main/java/uy/edu/gestec/presentacion/GestionMantenimiento.java`
- [Maintenance history](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarHistorialMantenimientos.java): `gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarHistorialMantenimientos.java`
- [User registration](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarUsuario.java): `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarUsuario.java`

### Business domain

- [Loan management](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionPrestamo.java): `gestec/src/main/java/uy/edu/gestec/negocio/GestionPrestamo.java`
- [Loan records](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/Prestamo.java): `gestec/src/main/java/uy/edu/gestec/negocio/Prestamo.java`
- [Resource service](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/ServicioRecursoTecnologico.java): `gestec/src/main/java/uy/edu/gestec/negocio/ServicioRecursoTecnologico.java`
- [Eligible people](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionPersonaHabilitada.java): `gestec/src/main/java/uy/edu/gestec/negocio/GestionPersonaHabilitada.java`
- [Incident management](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionIncidencia.java): `gestec/src/main/java/uy/edu/gestec/negocio/GestionIncidencia.java`
- [Maintenance management](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/ServicioMantenimiento.java): `gestec/src/main/java/uy/edu/gestec/negocio/ServicioMantenimiento.java`
- [User authentication](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/GestionUsuario.java): `gestec/src/main/java/uy/edu/gestec/negocio/GestionUsuario.java`
- [Password security](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/negocio/SeguridadContrasena.java): `gestec/src/main/java/uy/edu/gestec/negocio/SeguridadContrasena.java`

### Data access

- [Loan persistence](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/PrestamoDAO.java): `gestec/src/main/java/uy/edu/gestec/persistencia/PrestamoDAO.java`
- [Eligible-person persistence](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/PersonaHabilitadaDAO.java): `gestec/src/main/java/uy/edu/gestec/persistencia/PersonaHabilitadaDAO.java`
- [Resource persistence](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/RecursoTecnologicoDAO.java): `gestec/src/main/java/uy/edu/gestec/persistencia/RecursoTecnologicoDAO.java`
- [User persistence](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/UsuarioDAO.java): `gestec/src/main/java/uy/edu/gestec/persistencia/UsuarioDAO.java`
- [Maintenance persistence](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/MantenimientoDAO.java): `gestec/src/main/java/uy/edu/gestec/persistencia/MantenimientoDAO.java`
- [Incident persistence](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/IncidenciaDAO.java): `gestec/src/main/java/uy/edu/gestec/persistencia/IncidenciaDAO.java`
- [JDBC connection](https://github.com/sebastianseijasuy-maker/gestec-proyecto/blob/main/gestec/src/main/java/uy/edu/gestec/persistencia/ConexionBD.java): `gestec/src/main/java/uy/edu/gestec/persistencia/ConexionBD.java`

### External systems

- **MySQL database**

### Other components

- **Authorized operator**

## Connections

- Authorized operator → Sign in: enters credentials (evidence: `README.md`)
- Sign in → Main screen: launches screen (evidence: `gestec/src/main/java/uy/edu/gestec/negocio/Main.java`)
- Main screen → Loans and returns: opens lending
- Loans and returns → Loan management: submits loan (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java`)
- Loans and returns → Eligible people: looks up person (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java`)
- Loans and returns → Resource service: finds resources (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarPrestamo.java`)
- Loan management → Eligible-person persistence: checks eligibility (evidence: `gestec/src/main/java/uy/edu/gestec/negocio/GestionPrestamo.java`)
- Loan management → Loan persistence: records loan (evidence: `gestec/src/main/java/uy/edu/gestec/negocio/GestionPrestamo.java`)
- Loan persistence → JDBC connection: opens connection (evidence: `gestec/src/main/java/uy/edu/gestec/persistencia/PrestamoDAO.java`)
- JDBC connection → MySQL database: connects via JDBC (evidence: `README.md`)
- Loan queries → Loan management: queries loans (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarPrestamos.java`)
- Loans and returns → Loan queries: opens queries
- Main screen → Resource management: opens inventory (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java`)
- Resource management → Resource service: manages resources (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/GestionarRecurso.java`)
- Resource service → Resource persistence: persists changes (evidence: `gestec/src/main/java/uy/edu/gestec/negocio/ServicioRecursoTecnologico.java`)
- Main screen → People management: opens people (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java`)
- People management → Eligible people: manages people (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/GestionarPersona.java`)
- Eligible people → Eligible-person persistence: persists people (evidence: `gestec/src/main/java/uy/edu/gestec/negocio/GestionPersonaHabilitada.java`)
- Main screen → Incident intake: opens incidents
- Incident intake → Incident management: registers incident (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarIncidencia.java`)
- Main screen → Maintenance records: opens maintenance (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/PantallaPrincipal.java`)
- Maintenance records → Maintenance management: records service
- Maintenance records → Maintenance persistence: stores records
- Main screen → Maintenance history: opens history
- Maintenance history → Maintenance management: queries history (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/ConsultarHistorialMantenimientos.java`)
- Maintenance persistence → JDBC connection: opens connection (evidence: `gestec/src/main/java/uy/edu/gestec/persistencia/MantenimientoDAO.java`)
- Incident persistence → JDBC connection: opens connection (evidence: `gestec/src/main/java/uy/edu/gestec/persistencia/IncidenciaDAO.java`)
- Main screen → User registration: opens user setup
- User registration → User authentication: registers user (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/RegistrarUsuario.java`)
- Sign in → User authentication: authenticates (evidence: `gestec/src/main/java/uy/edu/gestec/presentacion/Login.java`)
- User authentication → Password security: checks passwords (evidence: `gestec/src/main/java/uy/edu/gestec/negocio/GestionUsuario.java`)
- User authentication → User persistence: reads users (evidence: `gestec/src/main/java/uy/edu/gestec/negocio/GestionUsuario.java`)
- User persistence → JDBC connection: opens connection (evidence: `gestec/src/main/java/uy/edu/gestec/persistencia/UsuarioDAO.java`)
