Plataforma FullStack para gestión y venta de repostería.
Frontend: React + Vite | Backend: Spring Boot | Autenticación: JWT
Resumen: Dulce Vida Web es una aplicación fullstack para una pastelería que incluye tienda pública, carrito de compras, gestión de usuarios y un panel administrativo para administrar productos, categorías y boletas/pedidos.
- Autenticación con JWT (Access + Refresh tokens).
- Roles:
USUARIO/CLIENTEyADMINISTRADOR. - Catálogo de productos con imágenes, filtros y paginación.
- Carrito de compras y proceso de checkout (generación de boleta con IVA).
- Panel administrativo con CRUD para Productos, Categorías y Usuarios.
- Upload de imágenes (almacenamiento local por defecto).
- Tests: Vitest (frontend) y JUnit (backend).
Dulce-Vida-Web/
- backend/ — Spring Boot (API, seguridad, persistencia)
- frontend/ — React + Vite (UI, context, rutas protegidas)
- Requerimientos/ — documentación y colecciones (Postman, ERS, testing)
- db/ — scripts SQL
- boletas_api.json — (archivo JSON en la raíz, utilidades/ejemplos)
- README.md — este archivo
- Frontend: React, Vite, Axios, Vitest
- Node.js 20.x recomendado
- Backend: Spring Boot 3.x, Spring Security (JWT), Spring Data JPA, Hibernate, MySQL 8
- Java 21 (JDK) recomendado
- Herramientas: Maven (mvnw incluido), OpenSSL (generación de secretos)
Requisitos
- Java JDK 21+
- Node.js 20+
- MySQL 8.x
- Crear la base de datos:
CREATE DATABASE dulcevidadb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- Backend — configuración y ejecución:
- Edita
backend/src/main/resources/application.propertieso usa variables de entorno:
spring.datasource.url=jdbc:mysql://localhost:3306/dulcevidadb?serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=TU_CONTRASEÑA- Variables de seguridad recomendadas:
app.security.jwt.secret=${JWT_SECRET_BASE64}
app.security.jwt.expiration-ms=3600000
app.security.bcrypt.strength=11Generar secreto (Linux/macOS):
openssl rand -base64 48- Ejecutar backend:
cd backend
# Linux/macOS
./mvnw spring-boot:run
# Windows
.\mvnw.cmd spring-boot:run- Servidor por defecto: http://localhost:8080
- Swagger UI (si está habilitado): http://localhost:8080/swagger-ui.html
- Frontend — instalar y ejecutar:
cd frontend
npm install
npm run dev- Frontend por defecto: http://localhost:5173
- Tokens en localStorage (claves usadas por el frontend).
- Interceptor Axios para inyectar Authorization y manejar refresh tokens mediante
/auth/refresh.
Frontend (Vitest):
cd frontend
npm testBackend (JUnit / Maven):
cd backend
./mvnw test- Scripts y seeds en
db/y posiblemente enbackend/src/main/resources/db/. - Si
spring.jpa.hibernate.ddl-autoestá activado, Hibernate puede crear/actualizar tablas automáticamente; si prefieres control manual, ejecuta los scripts endb/.
- POST /auth/login — autenticar (devuelve token + refreshToken)
- POST /auth/refresh — rota refresh token y devuelve nuevo par
- POST /auth/logout — revoca refresh token
- POST /api/usuarios/{id}/password — cambiar contraseña
- GET /api/boletas/mias — historial del usuario (paginado)
- GET /api/boletas/admin — historial global (admin)
- POST /api/cart/checkout — finaliza pedido y genera boleta (IVA 19%)
- Swagger UI:
/swagger-ui.html(cuando el backend esté corriendo) - Postman Collection / documentación: Requerimientos/
postman_collection.json - ERS : Requerimientos/
ERS-Ignacio-Silva.pdf - Archivo JSON en la raíz:
boletas_api.json - Scripts SQL:
db/
- Haz fork del repositorio.
- Crea una rama descriptiva:
feature/mi-cambioofix/bug. - Abre PR con descripción clara y tests si aplica.
Añade un archivo LICENSE si quieres publicar el proyecto con una licencia explícita (p. ej. MIT).
Ignacio Silva — FullStack Dev — https://github.com/iggn00
Hecho con ❤️ y mucho ☕