# sgontardo/gestion-bibliotecaria architecture

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

- Interactive diagram: https://gitdiagram.com/sgontardo/gestion-bibliotecaria
- Repository: https://github.com/sgontardo/gestion-bibliotecaria

## Overview

Sistema web de gestión bibliotecaria: usuarios y bibliotecarios interactúan con una interfaz Vue que consume una API Spring Boot y persiste mediante JPA en MySQL. El flujo principal cubre autenticación, catálogo, préstamos y devoluciones; una devolución tardía puede generar una amonestación, cuyo pago queda sujeto a verificación. También se documentan reseñas y comentarios. Los servicios de préstamos, usuarios, libros y reseñas muestran su acceso a repositorios; los demás enlaces internos reflejan la estructura documentada. Las llamadas específicas de componentes no muestreados se resumen como consumo de API, sin atribuir rutas concretas.

Main entry points: [`src/main/java/com/biblioteca/controller/Controller.java`](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/controller/Controller.java) (Controlador REST), [`src/main/java/com/biblioteca/repository/UsuarioRepository.java`](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/UsuarioRepository.java) (Usuarios), [`src/main/java/com/biblioteca/service/UsuarioService.java`](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/UsuarioService.java) (Usuarios y perfiles), [`src/main/java/com/biblioteca/service/PrestamoService.java`](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/PrestamoService.java) (Préstamos y devoluciones)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Interfaz Vue"]
  node_app["App y navegación<br/>[App.vue]"]
  node_screens["Pantallas de gestión"]
end

subgraph group_api["API y seguridad"]
  node_backend["Spring Boot"]
  node_controller["Controlador REST<br/>[Controller.java]"]
  node_security["Configuración seguridad"]
  node_userdetails["Carga de usuario"]
end

subgraph group_domain["Gestión bibliotecaria"]
  node_userservice["Usuarios y perfiles"]
  node_bookservice["Catálogo de libros<br/>[LibroService.java]"]
  node_loanservice["Préstamos y devoluciones"]
  node_fineservice["Amonestaciones y pagos"]
  node_reviewservice["Reseñas<br/>[ResenaService.java]"]
  node_commentservice["Comentarios"]
end

subgraph group_persistence["Persistencia"]
  node_userrepo["Usuarios"]
  node_bookrepo["Libros"]
  node_loanrepo["Préstamos"]
  node_finerepo["Amonestaciones"]
  node_reviewrepo["Reseñas"]
  node_commentrepo["Comentarios reseña"]
  node_mysql[("MySQL biblioteca_db")]
end

node_patron(("Usuario / bibliotecario"))

node_patron -->|"usa"| node_app
node_app -->|"muestra pantallas"| node_screens
node_app -->|"consulta sesión"| node_controller
node_screens -->|"consume API"| node_controller
node_controller -->|"gestiona usuarios"| node_userservice
node_controller -->|"gestiona libros"| node_bookservice
node_controller -->|"gestiona préstamos"| node_loanservice
node_controller -->|"gestiona pagos"| node_fineservice
node_controller -->|"gestiona reseñas"| node_reviewservice
node_controller -->|"gestiona comentarios"| node_commentservice
node_backend -->|"expone API"| node_controller
node_security -->|"configura autenticación"| node_userdetails
node_userdetails -->|"busca usuario"| node_userrepo
node_userservice -->|"lee y guarda"| node_userrepo
node_userservice -->|"comprueba préstamos"| node_loanrepo
node_userservice -->|"comprueba amonestaciones"| node_finerepo
node_userservice -->|"gestiona reseñas"| node_reviewrepo
node_userservice -->|"gestiona comentarios"| node_commentrepo
node_bookservice -->|"valida bibliotecario"| node_userrepo
node_bookservice -->|"busca y guarda"| node_bookrepo
node_loanservice -->|"busca usuario"| node_userrepo
node_loanservice -->|"consulta y guarda"| node_loanrepo
node_loanservice -->|"consulta y actualiza"| node_bookrepo
node_loanservice -->|"comprueba y genera"| node_finerepo
node_fineservice -->|"consulta y guarda"| node_finerepo
node_reviewservice -->|"consulta y guarda"| node_reviewrepo
node_reviewservice -->|"busca libro"| node_bookrepo
node_reviewservice -->|"busca usuario"| node_userrepo
node_commentservice -->|"consulta y guarda"| node_commentrepo
node_commentservice -->|"busca reseña"| node_reviewrepo
node_commentservice -->|"busca usuario"| node_userrepo
node_userrepo -->|"persiste usuarios"| node_mysql
node_bookrepo -->|"persiste libros"| node_mysql
node_loanrepo -->|"persiste préstamos"| node_mysql
node_finerepo -->|"persiste amonestaciones"| node_mysql
node_reviewrepo -->|"persiste reseñas"| node_mysql
node_commentrepo -->|"persiste comentarios"| node_mysql

click node_app "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/biblioteca-frontend/src/App.vue"
click node_screens "https://github.com/sgontardo/gestion-bibliotecaria/tree/main/biblioteca-frontend/src/components"
click node_backend "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/GestionBibliotecariaApplication.java"
click node_controller "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/controller/Controller.java"
click node_security "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/config/SecurityConfig.java"
click node_userdetails "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/security/CustomUserDetailsService.java"
click node_userservice "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/UsuarioService.java"
click node_bookservice "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/LibroService.java"
click node_loanservice "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/PrestamoService.java"
click node_fineservice "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/AmonestacionService.java"
click node_reviewservice "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/ResenaService.java"
click node_commentservice "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/ComentarioResenaService.java"
click node_userrepo "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/UsuarioRepository.java"
click node_bookrepo "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/LibroRepository.java"
click node_loanrepo "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/PrestamoRepository.java"
click node_finerepo "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/AmonestacionRepository.java"
click node_reviewrepo "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/ResenaRepository.java"
click node_commentrepo "https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/ComentarioResenaRepository.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_app,node_screens toneBlue
class node_backend,node_controller,node_security,node_userdetails toneAmber
class node_userservice,node_bookservice,node_loanservice,node_fineservice,node_reviewservice,node_commentservice toneMint
class node_userrepo,node_bookrepo,node_loanrepo,node_finerepo,node_reviewrepo,node_commentrepo,node_mysql toneRose
class node_patron toneIndigo
```

## Components

### Interfaz Vue

- [App y navegación](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/biblioteca-frontend/src/App.vue): `biblioteca-frontend/src/App.vue`
- [Pantallas de gestión](https://github.com/sgontardo/gestion-bibliotecaria/tree/main/biblioteca-frontend/src/components): `biblioteca-frontend/src/components`

### API y seguridad

- [Spring Boot](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/GestionBibliotecariaApplication.java): `src/main/java/com/biblioteca/GestionBibliotecariaApplication.java`
- [Controlador REST](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/controller/Controller.java): `src/main/java/com/biblioteca/controller/Controller.java`
- [Configuración seguridad](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/config/SecurityConfig.java): `src/main/java/com/biblioteca/config/SecurityConfig.java`
- [Carga de usuario](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/security/CustomUserDetailsService.java): `src/main/java/com/biblioteca/security/CustomUserDetailsService.java`

### Gestión bibliotecaria

- [Usuarios y perfiles](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/UsuarioService.java): `src/main/java/com/biblioteca/service/UsuarioService.java`
- [Catálogo de libros](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/LibroService.java): `src/main/java/com/biblioteca/service/LibroService.java`
- [Préstamos y devoluciones](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/PrestamoService.java): `src/main/java/com/biblioteca/service/PrestamoService.java`
- [Amonestaciones y pagos](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/AmonestacionService.java): `src/main/java/com/biblioteca/service/AmonestacionService.java`
- [Reseñas](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/ResenaService.java): `src/main/java/com/biblioteca/service/ResenaService.java`
- [Comentarios](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/service/ComentarioResenaService.java): `src/main/java/com/biblioteca/service/ComentarioResenaService.java`

### Persistencia

- [Usuarios](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/UsuarioRepository.java): `src/main/java/com/biblioteca/repository/UsuarioRepository.java`
- [Libros](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/LibroRepository.java): `src/main/java/com/biblioteca/repository/LibroRepository.java`
- [Préstamos](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/PrestamoRepository.java): `src/main/java/com/biblioteca/repository/PrestamoRepository.java`
- [Amonestaciones](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/AmonestacionRepository.java): `src/main/java/com/biblioteca/repository/AmonestacionRepository.java`
- [Reseñas](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/ResenaRepository.java): `src/main/java/com/biblioteca/repository/ResenaRepository.java`
- [Comentarios reseña](https://github.com/sgontardo/gestion-bibliotecaria/blob/main/src/main/java/com/biblioteca/repository/ComentarioResenaRepository.java): `src/main/java/com/biblioteca/repository/ComentarioResenaRepository.java`
- **MySQL biblioteca_db**

### Other components

- **Usuario / bibliotecario**

## Connections

- Usuario / bibliotecario → App y navegación: usa
- App y navegación → Pantallas de gestión: muestra pantallas
- App y navegación → Controlador REST: consulta sesión
- Pantallas de gestión → Controlador REST: consume API
- Controlador REST → Usuarios y perfiles: gestiona usuarios
- Controlador REST → Catálogo de libros: gestiona libros
- Controlador REST → Préstamos y devoluciones: gestiona préstamos
- Controlador REST → Amonestaciones y pagos: gestiona pagos
- Controlador REST → Reseñas: gestiona reseñas
- Controlador REST → Comentarios: gestiona comentarios
- Spring Boot → Controlador REST: expone API
- Configuración seguridad → Carga de usuario: configura autenticación
- Carga de usuario → Usuarios: busca usuario
- Usuarios y perfiles → Usuarios: lee y guarda
- Usuarios y perfiles → Préstamos: comprueba préstamos
- Usuarios y perfiles → Amonestaciones: comprueba amonestaciones
- Usuarios y perfiles → Reseñas: gestiona reseñas
- Usuarios y perfiles → Comentarios reseña: gestiona comentarios
- Catálogo de libros → Usuarios: valida bibliotecario
- Catálogo de libros → Libros: busca y guarda
- Préstamos y devoluciones → Usuarios: busca usuario
- Préstamos y devoluciones → Préstamos: consulta y guarda
- Préstamos y devoluciones → Libros: consulta y actualiza
- Préstamos y devoluciones → Amonestaciones: comprueba y genera
- Amonestaciones y pagos → Amonestaciones: consulta y guarda
- Reseñas → Reseñas: consulta y guarda
- Reseñas → Libros: busca libro
- Reseñas → Usuarios: busca usuario
- Comentarios → Comentarios reseña: consulta y guarda
- Comentarios → Reseñas: busca reseña
- Comentarios → Usuarios: busca usuario
- Usuarios → MySQL biblioteca_db: persiste usuarios
- Libros → MySQL biblioteca_db: persiste libros
- Préstamos → MySQL biblioteca_db: persiste préstamos
- Amonestaciones → MySQL biblioteca_db: persiste amonestaciones
- Reseñas → MySQL biblioteca_db: persiste reseñas
- Comentarios reseña → MySQL biblioteca_db: persiste comentarios
