PowerBooks
Plataforma de gestión de préstamos y catálogo de libros con autenticación, búsqueda avanzada y persistencia en Firebase.

Vista General del Proyecto
PowerBooks es una aplicación web tipo SPA (Single Page Application) desarrollada como proyecto final para la materia Desarrollo Web. Permite a los usuarios explorar un catálogo dinámico de libros obtenido de APIs públicas (Google Books / Open Library), buscar y filtrar por título, autor o categoría, tomar libros prestados con seguimiento de fechas de vencimiento, gestionar una lista de deseos y llevar un rastreador de estado de lectura. El proyecto se trabajó bajo una metodología ágil con planificación por sprints, utilizando GitHub Projects para el backlog y revisiones de código mediante pull requests. Se tomaron decisiones clave de arquitectura desde el inicio: se optó por Next.js 15 con App Router para aprovechar el renderizado híbrido (SSR + CSR) y el enrutado basado en archivos. La autenticación se resolvió con NextAuth.js integrado con Firebase (Firestore Auth y adaptador personalizado), permitiendo login tradicional (email/contraseña) y con Google. Se implementó una arquitectura limpia (Clean Architecture) separando el dominio (core/domain), los puertos (core/ports) y la infraestructura (infrastructure/), facilitando el testeo y la mantenibilidad. El estado global se gestiona con Zustand (stores: auth, books, loans, wishlist, notifications), utilizando persistencia parcial en localStorage. Los préstamos, lista de deseos y notificaciones se almacenan en Firestore, con reglas de seguridad RLS a nivel de colección. Para la comunicación en tiempo real (notificaciones de disponibilidad de libros), se empleó Firebase Cloud Messaging. El frontend es completamente responsivo, construido con Tailwind CSS, y se implementaron medidas de seguridad como sanitización de entradas (con DOMPurify), validación de formularios con Zod, rutas protegidas mediante middleware de Next.js y autenticación de doble factor opcional (TOTP). El despliegue se realizó en Vercel con dominio personalizado (powerbooks.space) y se configuraron variables de entorno para Firebase, Resend (envío de correos) y NextAuth. El equipo trabajó con daily stand-ups, sprints semanales y retrospectivas, logrando un MVP funcional en 6 semanas.
Módulos Core
Catálogo de Libros y Búsqueda Avanzada
Muestra libros desde APIs públicas (Google Books / Open Library). Implementa búsqueda por título, autor y palabras clave, con filtros por categoría y ordenación por popularidad o fecha. Incluye paginación y skeleton loading para mejorar la percepción de rendimiento.
Autenticación y Gestión de Perfiles
Login/registro tradicional (email/contraseña) y con Google usando NextAuth.js + Firebase. Rutas protegidas mediante middleware. Perfil de usuario con secciones: 'Mi Biblioteca' (libros prestados, leyendo, completados) y datos personales.
Sistema de Préstamos y Fechas de Vencimiento
Permite tomar libros prestados por un período definido (ej. 14 días). Registra fecha de préstamo y vencimiento. El historial se almacena en Firestore. Muestra notificaciones de vencimiento cercano y permite renovaciones automáticas si el libro está disponible.
Lista de Deseos y Rastreador de Lectura
Los usuarios pueden agregar libros a una lista de deseos y marcar progreso de lectura (Leyendo, Completado, Abandonado). Se integra con las notificaciones para avisar cuando un libro deseado está disponible para préstamo.
Seguridad y Validaciones
Sanitización de inputs con DOMPurify, validación de formularios con Zod, protección contra XSS y CSRF. Rutas protegidas por middleware que verifica la sesión activa. Reglas de seguridad en Firestore a nivel de documento. Opción de 2FA con TOTP.
Notificaciones en Tiempo Real y Emails
Sistema de notificaciones push (Firebase Cloud Messaging) para alertar sobre vencimientos, disponibilidad de libros deseados o confirmación de préstamos. Envío de correos transaccionales con Resend (bienvenida, confirmación de préstamo, recordatorio de vencimiento).
Optimización de Rendimiento y Accesibilidad
Imágenes optimizadas con next/image y lazy loading. Puntuación Lighthouse >90 en rendimiento y accesibilidad. Navegación por teclado, roles ARIA, contraste de colores y etiquetas semánticas HTML. SSR/SSG para catálogo estático y CSR para secciones dinámicas.
Tecnologías Implementadas
frontend
backend
ai And Storage
tools
Galería del Sistema





