Proyecto personal · Aplicación web
Obsidian Library
Una biblioteca. Todo un producto detrás.
Obsidian conecta la experiencia del lector con las reglas de una biblioteca: encontrar un libro, consultar su disponibilidad, gestionar un préstamo o una reserva y mantener al día la membresía. Un proyecto personal publicado como demo, con frontend en Next.js y backend en Java y Spring Boot.
- Mi participación
- Desarrollo frontend e integración con la API; backend, datos y pagos.
- Estado
- Demo publicada · Interfaz en refinamiento
- Año
- 2026
El punto de partida
Lo que ocurre entre un clic y una confirmación.
Un libro puede estar prestado, reservado o disponible. Un pago puede seguir pendiente cuando el lector vuelve desde Stripe. El reto es coordinar esos estados y explicarlos en la interfaz, aplicando en el servidor las reglas de disponibilidad, membresías y pagos.
Un recorrido dentro del sistema
Un pago confirmado tiene más de una pantalla detrás.
- 01
El lector solicita
Selecciona una membresía o una multa pendiente.
- 02
Stripe procesa
El servidor prepara el pago con el importe validado.
- 03
El backend confirma
Verifica el evento y registra el resultado una sola vez.
- 04
La interfaz responde
Consulta el estado confirmado y actualiza la experiencia.
Esquema del flujo implementado. Volver desde Stripe no activa por sí solo la membresía: el servidor debe confirmar el pago.
Decisiones que dan forma al producto
Confirmar antes de activar
La pantalla consulta el estado del backend y muestra la espera de confirmación. El servidor verifica la firma de los eventos de Stripe, reconoce entregas repetidas y evita que un evento tardío de fallo revierta un pago exitoso.
Una cola que respeta la disponibilidad
Las reservas avanzan según el orden de solicitud y los ejemplares libres. El lector dispone de 48 horas para recoger el libro. Al vencer ese plazo, el sistema puede dar paso a la siguiente reserva.
Sesiones coordinadas
Next.js conecta el navegador con la API de Spring Boot. La autenticación combina cookies HTTP-only, protección CSRF y rotación de refresh tokens. El cliente coordina las peticiones que necesitan renovar la sesión.
Reglas cerca de los datos
Los préstamos validan límites de la membresía y disponibilidad. Las operaciones críticas utilizan transacciones y bloqueos. Flyway mantiene el historial del esquema y PostgreSQL añade restricciones de integridad.
Implementación y verificación
67
pruebas en los reportes del backend
48 h
plazo de recogida de una reserva
CI
verificación con GitHub Actions
Reportes locales del 20 de septiembre de 2026: 67 pruebas aprobadas, incluidas 8 de integración con PostgreSQL mediante Testcontainers.
Tecnologías
- Next.js
- TypeScript
- Java
- Spring Boot
- PostgreSQL
- Stripe
Alcance actual
Demo de un proyecto personal. La experiencia del lector está publicada y la interfaz sigue puliéndose. La API incluye funciones administrativas; su interfaz aún no está completa. La renovación de membresías prepara un enlace de pago enviado por correo.
Una interfaz clara necesita representar también las esperas, los vencimientos y las operaciones que requieren confirmación.
Siguiente proyecto
La Central¿Construimos algo juntos?
Hablemos