HamBooking es una solución integral para la digitalización y gestión de servicios profesionales de corte de jamón. Este proyecto ha sido desarrollado como Trabajo de Fin de Grado (TFG) para el Ciclo Formativo de Grado Superior en Desarrollo de Aplicaciones Multiplataforma (DAM).
La aplicación permite a negocios especializados gestionar su agenda de cortadores profesionales mediante una arquitectura Cliente-Servidor REST. El sistema automatiza el control de disponibilidad, los límites de carga de trabajo y las comunicaciones con los clientes, eliminando procesos manuales y errores de solapamiento.
- Administrador: Gestión total de cortadores, usuarios, servicios y supervisión de reservas.
- Cliente: Registro autónomo, consulta de disponibilidad en tiempo real y autogestión de citas.
- Cortador (Recurso): Profesionales asignados a los servicios con control de capacidad diaria.
- Lenguaje: Java 21 (LTS)
- Framework: Spring Boot 3.x
- Persistencia: Spring Data JPA / Hibernate
- Base de Datos: MySQL 8.0
- Seguridad: Spring Security + BCrypt
- Validación: Jakarta Bean Validation (JSR-380)
- Framework: JavaFX 21
- Diseño: FXML + CSS (Scene Builder)
- Comunicación: HttpClient (JSON/REST)
- Gestión de Dependencias: Maven
- Testing: JUnit 5 + Mockito (Unitarios)
- Documentación: Javadoc profesional + Mermaid para diagramas
- Control de Versiones: Git (GitHub) utilizando Conventional Commits
El proyecto sigue principios de Clean Architecture y Defensa en Profundidad:
- Modelo de Datos Normalizado: Diseño en 3FN con 5 entidades interconectadas.
- Doble Escudo de Validación: Las reglas de negocio se validan tanto en la capa de aplicación (Java) como en la capa de persistencia (MySQL Constraints).
- Carga Perezosa (Lazy Loading): Optimización de memoria mediante
FetchType.LAZYen todas las relaciones para evitar el problema de las N+1 consultas. - Patrón DTO: Desacoplamiento total entre las entidades de base de datos y la información expuesta a la API REST.
El sistema cuenta con una batería de 496 pruebas unitarias que garantizan la estabilidad del backend:
- Entidades y Enums: Verificación de constraints, valores por defecto y consistencia.
- Repositorios: Pruebas de consultas personalizadas y métodos derivados con Mockito.
- Servicios (Business Logic): Cobertura del 100% de la lógica de negocio (solapamientos, límites diarios, algoritmos de disponibilidad y autenticación).
- Java JDK 21 o superior.
- MySQL Server 8.0.
- Maven 3.9+.
- Base de Datos: Ejecuta el script
database/schema.sqlen tu servidor MySQL. - Backend:
- Navega a
backend/backend/ - Configura las credenciales de BD en
src/main/resources/application.properties. - Ejecuta:
./mvnw spring-boot:run
- Navega a
- Frontend:
- Navega a
frontend/frontend/ - Ejecuta:
./mvnw javafx:run
- Navega a
Este proyecto integra competencias de los 16 módulos del ciclo, destacando:
- Programación & Acceso a Datos: Desarrollo del core Java y persistencia ORM.
- Desarrollo de Interfaces: Creación de la UI rica en JavaFX.
- Servicios y Procesos: Implementación de la API REST y concurrencia.
- Sistemas de Gestión Empresarial: Lógica de negocio tipo ERP para reservas.
Toda la documentación de diseño se encuentra en la carpeta /docs:
- Sergio (DjSurgeon) - Desarrollo y Diseño - GitHub