LogiTrack S.A. administra bodegas distribuidas en varias ciudades y gestiona movimientos de inventario (entradas, salidas y transferencias). Este proyecto implementa un backend centralizado con Spring Boot que:
- Controla movimientos entre bodegas
- Registra cambios de forma automática (auditoría)
- Protege la información con autenticación JWT
- Expone endpoints REST seguros y documentados
Desarrollar un sistema de gestión y auditoría que registre transacciones de inventario y genere reportes auditables por usuario.
- Gestión de Bodegas: CRUD completo. Campos:
id,nombre,ubicacion,capacidad,encargado. - Gestión de Productos: CRUD completo. Campos:
id,nombre,categoria,stock,precio. - Movimientos: Registrar
ENTRADA,SALIDA,TRANSFERENCIAcon:fecha,tipo,usuario,bodegaOrigen/destino,productosycantidades,observaciones(opcional, máx. 500). - Auditoría: Entidad
AuditoriacontipoOperacion (INSERT/UPDATE/DELETE),fecha,usuario,entidad,valoresAnteriores,valoresNuevos. Auditoría automática en movimientos y usuarios. - Seguridad (Spring Security + JWT):
/auth/login,/auth/register. Rutas seguras:/api/bodegas,/api/productos,/api/movimientos. Roles:ADMINyEMPLEADO. - Reportes:
- Productos con stock bajo (< 10)
- Movimientos por rango de fechas
- Auditorías por usuario/tipo
- Resumen general (JSON): stock total, totales, KPIs y productos más movidos
- Consolidado de movimientos (en módulo Reportes) con exportación Excel/CSV
- Documentación: Swagger/OpenAPI 3
- Excepciones y Validaciones:
@ControllerAdvice,@NotNull,@Size,@Min, etc. - Despliegue: MySQL, scripts SQL
schema.sql,data.sql, Tomcat embebido, frontend básico HTML/CSS/JS.
src/main/java/com/logitrack/
├─ controller/ # Endpoints REST (Auth, Bodega, Producto, Movimiento, Reporte, Auditoría)
├─ service/ # Lógica de negocio y agregaciones
├─ repository/ # Repositorios JPA
├─ model/ # Entidades JPA (Usuario, Rol, Bodega, Producto, Movimiento, Auditoria)
├─ config/ # Configuración de Security, CORS
├─ security/ # JWT util y filtro
└─ exception/ # (Opcional) Manejo global de errores
Frontend básico: src/main/resources/static/ con HTML/CSS/JS.
Requisitos:
- Java 17
- Maven 3.9+
- MySQL 8+
Pasos:
- Configura MySQL y credenciales en
application.properties. - Crea la base y carga scripts:
src/main/resources/schema.sqlsrc/main/resources/data.sql
- Compila e instala:
mvn clean install -DskipTests
Desarrollo:
mvn spring-boot:run
Producción (jar):
java -jar target/logitrack-0.0.1-SNAPSHOT.jar
Servidor por defecto: http://localhost:8080/
- Login:
POST /auth/login{username, password}→{token} - Usa
Authorization: Bearer <token>en llamadas a/api/** - Roles:
ADMINtiene acceso a/api/auditoria/**y/api/usuarios/**
- Bodegas:
GET/POST/PUT/DELETE /api/bodegas/** - Productos:
GET/POST/PUT/DELETE /api/productos/** - Movimientos:
POST /api/movimientos(ENTRADA/SALIDA/TRANSFERENCIA)GET /api/movimientos/por-fecha?inicio=YYYY-MM-DD&fin=YYYY-MM-DD
- Reportes:
GET /api/reportes/resumenGET /api/reportes/movimientos/export.xlsx?inicio&fin&tipo&orden- Consolidado:
GET /api/reportes/consolidado,GET /api/reportes/consolidado/resumen - Export:
GET /api/reportes/consolidado/export.xlsx,GET /api/reportes/consolidado/export.csv
- Auditoría:
GET /api/auditoria(ADMIN)- Filtros mixtos:
GET /api/auditoria/filtrar-mixto?usuario&operacion&entidad&inicio&fin&tipoMovimiento - Export:
GET /api/auditoria/export.xlsx,GET /api/auditoria/export.pdf(ADMIN)
- Validaciones en DTOs (
@Size,@Min, etc.) - Respuestas error JSON: 400 (validación), 401 (auth), 403 (rol), 404 (no encontrado), 500 (interno)
- Habilitar Swagger UI (si configurado):
/swagger-ui/index.html - Documentación OpenAPI:
/v3/api-docs
schema.sql: tablasrol,usuario,bodega,producto,movimiento,movimiento_producto,auditoriadata.sql: datos iniciales de roles, usuarios, bodegas y productos
- Páginas estáticas para login y módulos (HTML/CSS/JS):
static/ - Usa JWT en
localStoragey llama a endpoints confetch/api.js - Favicon en todas las páginas:
img/favicon.ico
- Autenticación JWT y autorización por rol
- Filtro
JwtAuthenticationFilterintegrado en la cadena de seguridad - CORS permitido para métodos y headers comunes
- Swagger: UI de endpoints
- Pruebas manuales con Postman/HTTPie usando JWT
- Exportaciones Excel/PDF para auditoría y consolidado de reportes
- Configura
spring.datasource.*para MySQL - Ajusta puerto si 8080 está en uso:
server.port=8081 - Empaquetado jar con
spring-boot-maven-plugin
- Dominio y manejo del código
- Modelo JPA
- Controladores y Servicios REST
- Manejo de Excepciones y Validaciones
- Auditoría Automática
- Seguridad con JWT
- Reportes y Consultas Avanzadas
- Despliegue y README
- Frontend Básico (HTML/JS)
- Probar con usuario
admin(rol ADMIN) yempleado(rol EMPLEADO).