Skip to content

nicovilab/springboot-datajpa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring Boot - Data JPA

Aplicación web de gestión de clientes y facturación desarrollada con Spring Boot 4, Thymeleaf y Spring Security. Permite realizar operaciones CRUD sobre clientes, gestionar facturas con líneas de detalle (productos) y controlar el acceso mediante autenticación con roles.

Tecnologías

Capa Tecnologías
Backend Java 21, Spring Boot 4.0.2, Spring Data JPA, Spring Security, Bean Validation
Frontend Thymeleaf, Bootstrap 5, jQuery UI Autocomplete
Base de datos MySQL 8, Flyway (migraciones)
Mapping / Utilidades MapStruct 1.6, Lombok 1.18
Testing JUnit 5, Mockito, AssertJ, H2 (in-memory)

Características

  • CRUD de clientes con subida y gestión de imágenes de perfil (UUID como nombre único, límite 10 MB).
  • Sistema de facturación con búsqueda de productos por autocompletado (AJAX + jQuery UI Autocomplete) y cálculo automático de importes con BigDecimal.
  • Autenticación y autorización basada en roles (ROLE_USER, ROLE_ADMIN) con Spring Security y encriptación BCrypt.
  • Paginación de resultados con componente reutilizable (PageRender).
  • Migraciones de base de datos con Flyway (V1 crea tablas, V2 inserta datos de prueba).
  • Separación de capas: Entidades JPA ↔ DTOs especializados (formulario, listado, detalle) mapeados con MapStruct.
  • Manejo global de errores con @ControllerAdvice (404, 500, 403).
  • Tests unitarios e integración: servicios con Mockito, repositorios con @DataJpaTest sobre H2, y mappers.

Requisitos previos

  • Java 21 (o superior)
  • Docker y Docker Compose (para la base de datos MySQL)
  • No es necesario instalar Maven — el proyecto incluye el wrapper (mvnw).

Instalación

  1. Clonar el repositorio:
git clone https://github.com/nicovilab/springboot-datajpa.git
cd springboot-datajpa
  1. Levantar MySQL con Docker:
docker compose up -d
  1. Ejecutar la aplicación:
.\mvnw spring-boot:run "-Dspring-boot.run.arguments=--DB_USERNAME=user --DB_PASSWORD=password"

Flyway ejecutará las migraciones automáticamente en el primer arranque, creando las tablas e insertando datos de prueba.

  1. Acceder a http://localhost:8080

Usuarios de prueba

Usuario Contraseña Roles
nico abc123. ROLE_USER
admin abc123. ROLE_ADMIN, ROLE_USER

ROLE_USER puede ver el listado de clientes, ver detalles de un cliente y visualizar sus fotos. ROLE_ADMIN además puede crear, editar y eliminar clientes, y gestionar facturas.

Endpoints principales

Método Ruta Acceso Descripción
GET /, /listar Público Listado paginado de clientes
GET /ver/{id} USER Detalle de un cliente con sus facturas
GET /form ADMIN Formulario de creación de cliente
POST /form ADMIN Guardar/actualizar cliente
POST /eliminar/{id} ADMIN Eliminar cliente
GET /factura/form/{clienteId} ADMIN Formulario nueva factura
POST /factura/form ADMIN Guardar factura
GET /factura/ver/{id} ADMIN Detalle de factura
POST /factura/eliminar/{id} ADMIN Eliminar factura
GET /factura/cargar-productos/{term} ADMIN Búsqueda AJAX de productos (JSON)
GET /login Público Página de login

Tests

.\mvnw test

Variables de entorno

Variable Descripción Ejemplo
DB_USERNAME Usuario de la base de datos MySQL user
DB_PASSWORD Contraseña de la base de datos MySQL password

Breve video demostración

Demo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors