Skip to content

Mai-de-jerez/Book_Shop_Java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📚 Book-Shop: Enterprise E-Commerce Engine

Proyecto principiante - Máster Full Stack - Grupo Atrium

"La arquitectura no es solo cómo se ve, sino cómo funciona bajo presión."

Este proyecto representa una solución integral de comercio electrónico para la venta de libros, desarrollada con un enfoque en alto rendimiento, seguridad multicapa y persistencia transaccional. Se ha huido de las soluciones monolíticas tradicionales para implementar una comunicación moderna basada en servicios de datos y un frontend asíncrono.


🏗️ Arquitectura del Sistema

El proyecto sigue un modelo de arquitectura desacoplada donde el servidor Java actúa como un motor de reglas de negocio y proveedor de datos, mientras que el cliente gestiona la capa de presentación de forma dinámica.

1. Capa de Datos y Persistencia (El Motor)

La gestión de la base de datos es el punto fuerte de este sistema. No se limita a consultas simples, sino que implementa una infraestructura robusta:

  • HikariCP (High-Performance Connection Pool): Para maximizar la eficiencia, se ha integrado el pool de conexiones más rápido del ecosistema Java. Esto permite una gestión óptima de los hilos de conexión, reduciendo la latencia de apertura/cierre y garantizando la escalabilidad ante múltiples usuarios concurrentes.
  • Patrón Active Record: Los modelos (Libro, Usuario, Pedido, etc.) han sido diseñados para encapsular tanto los datos como el comportamiento de persistencia. Esto permite una sintaxis más limpia y un mantenimiento simplificado, donde cada objeto "sabe" cómo guardarse, actualizarse o eliminarse.
  • Transaccionalidad Atómica (ACID): El módulo de transacciones garantiza que procesos críticos (como el finalizarCompra) sean indivisibles. Mediante el control manual de commit y rollback, se asegura que el descuento de stock y la inserción del pedido se realicen con éxito total, o se reviertan ante cualquier fallo, evitando la corrupción de datos.

2. Capa de Seguridad

Se ha implementado un sistema de seguridad basado en interceptores que blinda la aplicación contra accesos no autorizados:

  • AuthFilter: Un filtro global que verifica la existencia de una sesión activa antes de permitir el acceso a recursos protegidos.
  • RolFilter: Un filtro de autorización granular que jerarquiza los permisos. Solo los usuarios con el rol admin (como el perfil mai) pueden acceder a la zona de administración, gestionar el inventario o manipular el sistema.
  • Protección de Endpoints: No solo se protegen las vistas HTML, sino también los Servlets que sirven datos JSON, evitando el acceso a la lógica de negocio por peticiones externas no autenticadas.

3. Comunicación y Frontend (La Interfaz)

La aplicación rompe con el modelo clásico de JSPs para adoptar un flujo de datos moderno:

  • Arquitectura JSON-Driven: El Backend y el Frontend se comunican exclusivamente mediante objetos JSON. Esto permite que el servidor sea ligero y que el cliente reciba solo la información necesaria.
  • Frontend Asíncrono (JavaScript ES6+): Se utiliza JavaScript para realizar peticiones asíncronas (fetch/AJAX) a los Servlets. Esto permite actualizar la interfaz (como el carrito de compra o la lista de libros) sin necesidad de recargar la página completa, ofreciendo una experiencia de usuario fluida (tipo SPA).
  • Maquetación Profesional: Uso de HTML5 semántico y CSS3 con técnicas de diseño responsive para asegurar que la tienda sea accesible desde cualquier dispositivo.

🚀 Características Principales

🛒 Flujo de Compra Blindado

El proceso de checkout es el corazón del sistema. Implementa una lógica que:

  1. Valida el stock disponible en tiempo real antes de procesar.
  2. Abre una transacción JDBC exclusiva.
  3. Actualiza el inventario y genera el registro de pedido y detalle.
  4. Confirma los cambios solo si todas las operaciones son exitosas.

🛠️ Panel de Administración (Superuser)

Una zona restringida de alta complejidad que permite:

  • Gestión de Libros: CRUD completo de libros.
  • Gestión de Categorías: CRUD completo de categorías.
  • Gestión de Usuarios: CRUD completo de usuarios.
  • Gestión de Pedidos: visualización dinámica de todas las compras realizadas, control para marcar pedidos como pendientes, enviados o entregados, posibilidad de modificar direcciones de entrega o teléfonos de contacto, ajuste automático del stock según los cambios en los pedidos, seguimiento detallado de accesos y operaciones críticas en la consola del servidor.

🛠️ Stack Tecnológico

Componente Tecnología
Lenguaje Java 21
Pool de Conexiones HikariCP
Persistencia JDBC / Active Record
Servidor de Aplicaciones Apache Tomcat 10
Base de Datos MySQL
Frontend JavaScript (ES6), HTML5, CSS3
Formato de Datos JSON
Seguridad Servlet Filters (Auth & RBAC)

🚀 Como clonártelo

No quiero que lo clones de ahí la falta de pasos para ello. Pero te dejo estas fotillos por aquí.

Captura de pantalla 2026-02-18 192229 Captura de pantalla 2026-02-18 192301 Captura de pantalla 2026-02-18 192314 Captura de pantalla 2026-02-18 192333 Captura de pantalla 2026-02-18 192351 Captura de pantalla 2026-02-18 192405 Captura de pantalla 2026-02-18 192416 Captura de pantalla 2026-02-18 192429 Captura de pantalla 2026-02-18 192449 Captura de pantalla 2026-02-18 192841

About

Proyecto Java con JDBC, JS vanilla, HTML5, Maven, Tomcat 10 y mysqlconnector. Pretende demostrar el desarrollo sin Frameworks, usando el código virgen en toda su plenitud. (No recomiendo hacer un proyecto como este así, benditos Framworks)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors