Aplicación web para explorar, administrar e importar el inventario de perfumes de Habibi Parfums. El incremento más reciente se encuentra en Scrum/Sprint7/luxor-proj.
- Catálogo de perfumes, búsqueda, detalle y carrito de compras.
- Autenticación, registro y panel administrativo.
- Checkout con resumen de compra, validación y confirmación de pedido.
- Chatbot para consultas sobre fragancias.
- Categorías para perfumes e importación masiva de inventario mediante CSV.
- Reportes operativos e historial de importaciones.
- Frontend: React, TypeScript, Vite, Tailwind CSS y Framer Motion.
- Backend: Node.js, Express y PostgreSQL.
- Chatbot: FastAPI y proveedor LLM desacoplado.
- Infraestructura local: Docker Compose.
cd Scrum/Sprint7/luxor-proj
docker compose up --buildAbre http://localhost:5173. El backend se expone en http://localhost:3000 y PostgreSQL en el puerto local 5433.
Antes de iniciar, crea Scrum/Sprint7/luxor-proj/.env con:
POSTGRES_USER=postgres
POSTGRES_PASSWORD=
POSTGRES_DB=habibi_parfums
POSTGRES_HOST=db
POSTGRES_PORT=5432
FRONTEND_URL=http://localhost:5173
PAYMENT_GATEWAY_API_KEY=
PAYMENT_GATEWAY_LATENCY_MS=400
Frontend:
cd Scrum/Sprint7/luxor-proj
npm ci
npm run devBackend:
cd Scrum/Sprint7/luxor-proj/backend
npm ci
npm run seed
npm run devPara configurar otra API en el frontend, define VITE_API_URL en .env.local.
Cada pieza vive en un proveedor distinto:
| Componente | Proveedor | URL de producción |
|---|---|---|
| Frontend (React + Vite) | Vercel | https://luxor-project-green.vercel.app |
| Backend (Node + Express) | Render (servicio Docker) | https://luxor-backend-9ov9.onrender.com |
| Chatbot (FastAPI) | Render (servicio Docker) | https://luxor-chatbot.onrender.com |
| Base de datos | PostgreSQL gestionado en Render (luxor-db) |
— (host interno) |
- El root directory del proyecto en Vercel es
Scrum/Sprint7/luxor-proj; el build usavercel.json. Variables:VITE_API_URLyVITE_CHATBOT_URL(URLs del backend y del chatbot). - Los dos servicios de Render y la base se describen en el blueprint
render.yaml(raíz del repo). El chatbot usa un proveedor de LLM compatible con OpenAI (Groq) en producción porque Render no puede correr Ollama; se selecciona conLLM_PROVIDER=groq. - El paso a paso completo (alta de servicios, tabla de variables, criterios de aceptación) está en
Scrum/Sprint7/luxor-proj/docs/DEPLOY_RENDER.md.
- Hacer merge a
main. - Vercel redepliega el frontend automáticamente en cada push a
main. - Render vuelve a sincronizar el blueprint y redepliega backend y chatbot en cada push a
main. - Los secretos (
LLM_API_KEYde Groq) no viajan en el repo: se cargan a mano en el panel de Render (luxor-chatbot→ Environment) y persisten entre despliegues.
En el panel administrativo, entra a Importar CSV. El formato exige estos encabezados, en este orden:
id,name,price,image,description,stock,salida,corazon,fondoid,name,priceystockson obligatorios.iddebe ser único y usar letras, números y guiones.pricedebe ser un número no negativo con hasta dos decimales.stockdebe ser un entero no negativo.- Las filas inválidas muestran fila, campo y causa; las válidas se guardan transaccionalmente.
Consulta la especificación CSV y el guion de presentación de Sprint7.
cd Scrum/Sprint7/luxor-proj/backend
npm test
cd ..
npm run build| Ruta | Descripción |
|---|---|
/ |
Inicio y catálogo destacado. |
/perfumes |
Catálogo completo. |
/cart |
Carrito de compras. |
/login |
Inicio de sesión y registro. |
/payment |
Pago y confirmación de compra. |
/admin |
Panel de inventario, solo administradores. |
/admin/importar |
Importación CSV e historial, solo administradores. |
/reporte |
Reporte operativo, solo administradores. |
- Dally Ramirez
- Denis Roberto Rodríguez Jiménez
- Diego Sandoval
- Javier Chávez
- Adrián López