Sistema de e-commerce completo desarrollado por Nexo Spa. Plataforma genérica y adaptable para cualquier rubro, con frontend público, panel de cliente y panel administrativo.
| Capa | Tecnología |
|---|---|
| Frontend | React 18, Vite, TypeScript, Tailwind CSS, React Router, TanStack Query, Zustand, React Hook Form |
| Backend | Node.js, NestJS, TypeScript, Prisma ORM, JWT |
| Base de datos | PostgreSQL 16 |
| Infraestructura | Docker, Docker Compose, Nginx |
nexo/
|-- backend/ # API NestJS
| |-- prisma/ # Schema, migraciones, seed
| `-- src/
| |-- common/ # Filtros, guards, interceptors, Prisma
| `-- modules/ # Auth, Users, Products, Cart, Orders, etc.
|-- frontend/ # App React + Vite
| `-- src/
| |-- api/ # Cliente HTTP y servicios
| |-- components/ # Componentes reutilizables
| |-- pages/ # Páginas (store, account, admin)
| |-- stores/ # Zustand stores
| `-- lib/ # Utilidades
|-- docker-compose.yml
|-- .env.example
`-- README.md
- Node.js 20+
- PostgreSQL 16 (o Docker)
- npm o yarn
# Copiar variables de entorno
cp .env.example .env
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env# Opción A: Docker (recomendado)
docker run -d --name nexo-db \
-e POSTGRES_USER=nexo \
-e POSTGRES_PASSWORD=nexo_password \
-e POSTGRES_DB=nexo_db \
-p 5432:5432 \
postgres:16-alpine
# Opción B: PostgreSQL local
# Crear una base de datos "nexo_db" y ajustar DATABASE_URL en backend/.envcd backend
npm install
npx prisma generate
npx prisma migrate dev --name init
npm run db:seed
npm run start:devEl backend estará en: http://localhost:3000
Swagger docs en: http://localhost:3000/api/docs
También puedes iniciarlo desde la raíz con: npm run start:dev
Ese comando ahora detecta si el puerto del backend ya está ocupado por otra instancia node del mismo entorno de desarrollo y la cierra antes de volver a levantar Nest.
cd frontend
npm install
npm run devLa tienda estará en: http://localhost:5173
También puedes iniciarla desde la raíz con: npm run dev:frontend
Si quieres levantar frontend y backend juntos desde la raíz:
npm run devdocker-compose up -d --buildLuego ejecutar el seed:
docker exec nexo-api npx prisma db seedAcceder en: http://localhost:5173
| Rol | Contraseña | |
|---|---|---|
| Super Admin | admin@nexo.cl | admin123 |
| Cliente | juan@test.cl | cliente123 |
| Cliente | maria@test.cl | cliente123 |
npm run devdesde la raíz levanta frontend y backend al mismo tiemponpm run start:devahora libera automáticamente el puerto del backend si había otra instancianodeocupándolo- Home con carrusel de banners activos
- Banners editables desde admin con subida, recorte y vista previa de imágenes
- Páginas informativas administrables desde el panel con navegación pública dinámica
- Footer público conectado a configuración, redes sociales y datos reales de la tienda
- Reseñas habilitadas sólo para clientes con compras entregadas
- Favoritos con corazón animado y estado visual sincronizado
- Animación breve al agregar productos al carrito con feedback también en el ícono del header
- Buscador público con sugerencias rápidas mientras el usuario escribe
- Historial y detalle de pedidos rediseñados con mejor jerarquía visual y seguimiento
- Transición suave entre light mode y dark mode
- Home con carrusel de banners, productos destacados y en oferta
- Catálogo con filtros (categoría, precio, marca, estado)
- Ordenamiento (precio, nombre, fecha, ventas)
- Paginación
- Detalle de producto con variantes, imágenes, reseñas y favoritos
- Productos relacionados
- Buscador con sugerencias rápidas
- Carrito de compras (invitado y autenticado)
- Checkout completo (dirección, envío, pago)
- Páginas informativas dinámicas (políticas, FAQ, etc.) con diseño editorial
- Footer y enlaces sociales conectados a la configuración pública
- Dark mode con transición visual
- Perfil y datos personales
- Direcciones múltiples
- Historial de pedidos con vista enriquecida y detalle visual de seguimiento
- Seguimiento de pedidos
- Favoritos / wishlist con feedback visual
- Reseñas de productos después de pedidos entregados
- Cambio de contraseña
- Dashboard con métricas (ventas, pedidos, stock)
- CRUD de productos con variantes
- Gestión de categorías
- Gestión de pedidos con cambio de estado
- Historial de estados por pedido
- Gestión de clientes con búsqueda
- Banners con edición completa y recorte de imágenes
- Moderación de reseñas
- Configuración de tienda y redes sociales
- Gestión de páginas informativas / CMS
- Cupones de descuento
- Autenticación JWT con registro/login
- RBAC (Customer, Admin, Super Admin)
- Validación con class-validator y DTOs
- Manejo centralizado de errores
- Respuestas estandarizadas
- Paginación
- Soft delete
- Upload de archivos e imágenes servido desde
/uploads - Endpoints públicos para configuración y páginas informativas
- Validación de elegibilidad para reseñas post-entrega
- Swagger API docs
- Pasarela de pago mock (desacoplada para integración real)
Modelos principales: User, Address, Category, Product, ProductImage, ProductVariant, Cart, CartItem, Order, OrderItem, Payment, ShippingMethod, Coupon, WishlistItem, Review, Setting, Banner, Page, AuditLog
| Parámetro | Valor |
|---|---|
| Nombre | Nexo Spa |
| País | Chile |
| Moneda | CLP |
| Idioma | es-CL |
| Tema | Claro con Dark Mode |
| Color principal | #06b6d4 (cyan) |
| Venta con stock | Sí |
| Variantes | Sí |
| Compra invitado | Sí |
| Despacho | Sí |
| Retiro en tienda | No |
| Wishlist | Sí |
| Reseñas | Sí |
El módulo de pagos usa una arquitectura desacoplada. Para integrar Webpay, Mercado Pago, Stripe u otro:
- Crear un nuevo service en
backend/src/modules/payments/(ej:webpay.service.ts) - Implementar los métodos
initTransaction,confirmTransaction,refund - Registrar en el módulo y actualizar el controller
- El enum
PaymentMethodya incluye las opciones
El modelo de Order incluye datos del cliente y dirección. Para agregar facturación:
- Crear modelo
Invoiceen Prisma - Crear módulo NestJS
invoices - Integrar con SII o proveedor de facturación electrónica
Para agregar soporte:
- Crear modelos
BranchyWarehouse - Relacionar stock de productos por bodega
- Ajustar la lógica de despacho y disponibilidad
# Raíz del proyecto
npm run dev # Frontend + backend en desarrollo
npm run dev:full # Alias explícito del stack completo
npm run start:dev # Backend en desarrollo
npm run dev:frontend # Alias explícito para frontend
npm run dev:backend # Alias explícito para backend
npm run build:frontend # Build del frontend
npm run build:backend # Build del backend
npm run db:generate # Prisma generate en backend
npm run db:migrate # Prisma migrate dev en backend
npm run db:seed # Seed en backend
# Backend (desde /backend)
npm run start:dev # Desarrollo con hot reload
npm run build # Build producción
npm run db:migrate # Ejecutar migraciones
npm run db:seed # Ejecutar seed
npm run db:studio # Prisma Studio (GUI BD)
# Frontend (desde /frontend)
npm run dev # Desarrollo
npm run build # Build producción
npm run preview # Preview del buildProyecto privado - Nexo Spa © 2025