Saltar al contenido

Explora el portfolio

Todos los proyectos

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.

Obsidian Library · Captura de la aplicación
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.

  1. 01

    El lector solicita

    Selecciona una membresía o una multa pendiente.

  2. 02

    Stripe procesa

    El servidor prepara el pago con el importe validado.

  3. 03

    El backend confirma

    Verifica el evento y registra el resultado una sola vez.

  4. 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

01

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.

02

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.

03

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.

04

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.