Skip to content

FacundoChacon/Bodega

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bodega Maipú — E-Commerce

Plataforma web full-stack para una bodega mendocina. Catálogo de vinos con filtros, carrito de compras, integración con Mercado Pago y reserva de mesas para el restaurante.


Stack tecnológico

Capa Tecnología
Frontend React 19, Vite 8, React Router DOM
Backend Java 21, Spring Boot 4.1.0, Maven
Base de datos MySQL 8 con JPA/Hibernate
Pagos Mercado Pago SDK Java 2.1.7
HTTP Axios (frontend), Fetch API

Estructura del proyecto

Bodega/
├── bodega-backend/          # API REST Spring Boot
│   └── ecomerce/
│       ├── pom.xml
│       └── src/main/java/com/bodega/ecomerce/
│           ├── EcomerceApplication.java
│           ├── controllers/     # 4 controladores REST
│           ├── services/        # 4 servicios
│           ├── repositories/    # 7 repositorios JPA
│           ├── entities/        # 7 entidades
│           ├── dto/             # CarritoDTO
│           ├── enums/           # MetodoPago, CampoOrdenamientoProducto
│           ├── exceptions/      # Excepciones + GlobalExceptionHandler
│           └── specificaciones/ # VinoSpecification (filtros dinámicos)
│
├── bodega-frontend/         # SPA React + Vite
│   ├── package.json
│   └── src/
│       ├── App.jsx              # Orquestador principal
│       ├── hooks/useCarrito.js  # Lógica del carrito
│       ├── services/            # VinoService, ReservaService
│       └── components/          # 11 componentes con estilos CSS
│
└── Creacion_de_DB/
    └── CREACION_DB.sql          # Script SQL inicial

Funcionalidades

Catálogo de vinos

  • Paginación (6 vinos por página) con carrusel animado
  • Filtros combinados: bodega, categoría, rango de precio
  • Ordenamiento por nombre, precio, año o bodega (ASC/DESC)
  • Stock en tiempo real con límite por producto

Carrito de compras

  • Modal lateral con lista de productos animada
  • Control de cantidades y eliminación de ítems
  • Cálculo automático del total
  • Persistencia en localStorage durante el flujo de pago

Pago con Mercado Pago

  • El backend crea una preferencia de pago redirigiendo al checkout de MP
  • Tras el pago exitoso, la página /pago-exitoso descuenta stock automáticamente
  • Redirección automática al inicio después de 3 segundos

Reserva de mesas

  • Formulario con nombre, teléfono, fecha, horario y cantidad de personas
  • Asignación inteligente: el backend busca mesas disponibles con capacidad suficiente
  • Validación de disponibilidad en la fecha solicitada

Control de edad

  • Gate +18 al cargar la página
  • Persistencia en sessionStorage para no repetir en la sesión

Base de datos

Esquema MySQL con 7 tablas:

  • categoria — Tipos de vino
  • vino — Productos con precio, stock y descripción
  • usuario — Clientes registrados
  • pedido / detalle_pedido — Órdenes de compra
  • mesa / reserva — Gestión del restaurante

Hibernate configurado con ddl-auto=update para sincronización automática.


API REST

Método Endpoint Descripción
GET /api/vinos Vinos con filtros, orden y paginación
POST /api/vinos Crear vino
PUT /api/vinos/{id} Actualizar vino
DELETE /api/vinos/{id} Eliminar vino
PUT /api/vinos/{id}/descontar-stock Descontar stock post-pago
GET /api/categorias Listar categorías
POST /api/categorias Crear categoría
POST /api/pedidos/checkout-real Crear preferencia de pago MP
GET /api/reservas Listar reservas
POST /api/reservas Crear reserva (asigna mesa)
DELETE /api/reservas/{id} Eliminar reserva

Cómo ejecutar

Backend

cd bodega-backend/ecomerce
./mvnw spring-boot:run

Requiere MySQL corriendo en localhost:3306 con base bodega.

Frontend

cd bodega-frontend
npm install
npm run dev

Abre http://localhost:5173.


Estado del proyecto

Proyecto funcional con flujo completo de navegación, compra y reserva. Pendientes de mejora:

  • Persistir pedido en BD durante el flujo de Mercado Pago
  • Enviar valores reales del carrito a la preferencia de MP
  • Agregar autenticación y seguridad (Spring Security)
  • Pasar variables sensibles (token MP) a variables de entorno
  • Migrar a HTTPS para producción
  • Pruebas unitarias y de integración

About

Aplicación Full Stack con backend en Java/Spring Boot, frontend en JavaScript y persistencia de datos en base de datos relacional. Incluye diseño y creación de esquema de base de datos.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors