Saltar al contenido
Mis Proyectos
Caso de estudio 2026

La Librería

Sistema de gestión de biblioteca para la terminal en Java 21: libros, socios y préstamos con reglas de negocio reales, persistido en JSON.

  • Java
  • Maven

El caso de estudio

Problema
Administrar libros, socios y préstamos con reglas que se cumplan siempre —cupos, límites por tipo de socio, préstamos no duplicados— sin dejar nunca el estado en un valor imposible.
Solución
Arquitectura por capas con dependencias hacia adentro y una interfaz genérica Repository<T>; dominio rico donde las entidades protegen sus invariantes y las reglas de préstamo viven en un enum por tipo de socio.
Resultado
61 pruebas con JUnit 5, fat jar ejecutable con Maven y documentación de arquitectura, dominio y decisiones de diseño. Licencia MIT.

Proceso

Proceso de desarrollo

El razonamiento detrás de las decisiones técnicas: por qué se eligió cada tecnología, qué retos surgieron y cómo se resolvieron.

  1. 01

    Capas y un Repository<T> genérico

    La arquitectura tiene las dependencias apuntando hacia adentro y una interfaz genérica Repository<T> que abstrae el almacenamiento. Gracias a eso, hoy persisto en JSON pero podría cambiar a una base de datos tocando una sola implementación, sin que el dominio se entere.

  2. 02

    Un dominio que protege sus reglas

    En vez de dejar las validaciones dispersas, las entidades protegen sus propias invariantes: un préstamo no puede existir si no hay ejemplares, y las reglas por tipo de socio (cupos, límites) viven en un enum. El estado nunca queda en un valor imposible, porque el objeto se niega a construirse mal.

  3. 03

    Confianza a través de las pruebas

    Escribí 61 pruebas con JUnit 5 sobre las reglas de negocio, que son la parte crítica del sistema. Esa red de seguridad me permitió refactorizar sin miedo y documentar las decisiones de diseño. El proyecto se empaqueta como un fat jar ejecutable con Maven.

Repositorios

Commits

  1. Cambios varios

    0cd85bcEduardohace 3 semanas

  2. Initial commit

    7435d4cEduardohace 3 semanas