Proyecto
Membership Rules Engine
Proyecto backend en Java y Spring Boot orientado a modelar reglas de negocio de membresía sobre un caso ficticio, con foco en validación, elegibilidad, asignación de entradas, persistencia relacional, calidad de pruebas y documentación técnica.
Resumen
Backend en Java/Spring Boot que modela reglas de negocio para socios de un club ficticio, con descuentos, ventanas de venta, asignación de entradas para una final, lista de espera, cancelaciones, persistencia, tests, CI y demo visual.
Stack: Java 21, Spring Boot, Maven, REST API, PostgreSQL, Flyway, Spring Data JPA, JUnit 5, AssertJ, Testcontainers, JaCoCo, GitHub Actions, HTML, CSS, JavaScript, GitHub Pages
Qué hace
El proyecto busca representar lógica de negocio real más allá de un CRUD básico, trabajando con reglas condicionales, ventanas de acceso, validación de identidad del socio, límites de aforo y estados de resultado según el contexto. La idea es disponer de una base backend donde se vea con claridad cómo diseñar y probar decisiones de negocio con distintos caminos de ejecución y restricciones funcionales.
Cómo está construido
La solución está desarrollada con Java 21 y Spring Boot, siguiendo una estructura backend basada en API REST, capa de servicio, persistencia con PostgreSQL y control de esquema con Flyway. Modela distintos tipos de socios, operaciones de tienda y solicitudes de entradas, incluyendo acceso incluido para abonados, ventanas de venta para partido normal y asignación limitada para una final. El proyecto utiliza Spring Data JPA y Maven, añade documentación técnica y ejemplos de uso con curl, y se completa con una demo visual estática publicada con GitHub Pages para explicar el comportamiento del sistema sin necesidad de ejecutar la aplicación localmente.
Qué valida o automatiza
El backend valida cada operación mediante memberNumber y accessCode antes de aplicar cualquier regla y resuelve distintos estados funcionales como CONFIRMED, NOT_YET_AVAILABLE, ALREADY_INCLUDED, WAITING_LIST, NOT_ELIGIBLE, DUPLICATE_REQUEST, CANCELLED o INVALID_MEMBER_ACCESS. La calidad se refuerza con tests unitarios, parametrizados e integración usando JUnit 5, AssertJ y Testcontainers con PostgreSQL real, además de integración continua en GitHub Actions y cobertura con JaCoCo para mantener una base reproducible y verificable.
Puntos clave
- Backend centrado en reglas de negocio con validación de socios, descuentos, venta de entradas y asignación para una final con cupo limitado.
- Persistencia real con PostgreSQL, control de esquema con Flyway y acceso a datos con Spring Data JPA.
- Base de calidad con tests unitarios e integración, PostgreSQL real en pruebas mediante Testcontainers, CI en GitHub Actions y demo visual en GitHub Pages.