Monorepo para aplicación de ecommerce construido con pnpm + Turborepo.
├── apps/
│ ├── frontend/ # Vite + React + TypeScript
│ └── backend/ # NestJS + TypeScript
├── packages/
│ └── ui/ # Componentes UI compartidos
├── infra/
│ └── docker-compose.yml # Servicios de infraestructura
└── README.md
- Monorepo: pnpm + Turborepo
- Frontend: Vite + React + TypeScript
- Backend: NestJS + TypeScript
- Base de Datos: PostgreSQL 15
- Cache: Redis
- UI: Componentes compartidos con TypeScript
- Node.js >= 18.0.0
- pnpm >= 8.0.0
- Docker y Docker Compose
-
Instalar pnpm (si no lo tienes):
npm install -g pnpm
-
Clonar el repositorio:
git clone <tu-repositorio> cd ecommerce-monorepo
-
Instalar dependencias y configurar:
pnpm bootstrap
-
Iniciar servicios de infraestructura:
cd infra docker-compose up -d -
Iniciar desarrollo:
pnpm dev
| Comando | Descripción |
|---|---|
pnpm dev |
Inicia frontend (puerto 3000) y backend (puerto 3001) en paralelo |
pnpm build |
Construye todos los paquetes |
pnpm lint |
Ejecuta linting en todos los paquetes |
pnpm format |
Formatea código con Prettier |
pnpm bootstrap |
Instala dependencias y construye paquetes |
pnpm clean |
Limpia archivos de build |
pnpm test |
Ejecuta tests de backend y frontend |
pnpm test:coverage |
Ejecuta tests con reporte de cobertura |
pnpm backend:test |
Ejecuta solo tests del backend |
pnpm frontend:test |
Ejecuta solo tests del frontend |
pnpm test:e2e |
Ejecuta tests E2E con Playwright |
pnpm test:e2e:headed |
Ejecuta tests E2E con navegador visible |
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
- API Health: http://localhost:3001/health
- PostgreSQL: localhost:5432
- Base de datos:
ecommerce_dev - Usuario:
postgres - Contraseña:
postgres
- Base de datos:
- Redis: localhost:6379
- PgAdmin: http://localhost:5050
- Email:
admin@ecommerce.com - Contraseña:
admin
- Email:
El proyecto incluye tests E2E completos con Playwright que validan el flujo completo de compra:
# Ejecutar tests E2E en modo headless
pnpm --filter frontend test:e2e
# Ejecutar tests E2E con navegador visible
pnpm --filter frontend test:e2e:headed
# Ejecutar tests E2E específicos
pnpm --filter frontend test:e2e --grep "checkout"Los tests E2E cubren los siguientes escenarios:
-
Catálogo (PLP)
- Navegación a
/productos - Validación de carga de productos
- Búsqueda de productos
- Navegación a
-
Página de Producto (PDP)
- Visualización de detalles del producto
- Agregar productos al carrito
- Validación del drawer del carrito
-
Carrito → Checkout
- Gestión del carrito
- Login de usuario
- Persistencia del carrito
-
Pago (Mercado Pago)
- Configuración de envío
- Creación de preference de pago
- Redirección a Mercado Pago
-
Confirmación de Orden
- Verificación de estado de orden
- Validación de reducción de stock
Los reportes de Playwright se generan en:
- Local:
apps/frontend/playwright-report/ - CI/CD: Disponible como artefacto en GitHub Actions
- Base URL: http://localhost:3000
- Navegador: Chromium por defecto
- Retries: 2 en CI, 0 en local
- Reporter: List + HTML
Los tests utilizan un usuario de prueba:
- Email: testuser@example.com
- Password: Test1234
Aplicación React con Vite, optimizada para desarrollo rápido.
API REST con NestJS, preparada para escalabilidad.
Componentes React reutilizables con TypeScript.
- Configuración estricta habilitada
- Path mapping configurado
- Declaraciones de tipos automáticas
- Reglas consistentes en todo el monorepo
- Formateo automático
- Integración con TypeScript
- Servicios aislados en red dedicada
- Volúmenes persistentes
- Configuración de desarrollo optimizada
Para ejecutar la aplicación completa en contenedores Docker:
# Construir y levantar todos los servicios
docker-compose -f docker-compose.staging.yml up --build
# Ejecutar en segundo plano
docker-compose -f docker-compose.staging.yml up -d --build
# Ver logs
docker-compose -f docker-compose.staging.yml logs -f
# Detener servicios
docker-compose -f docker-compose.staging.yml down- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- PostgreSQL: localhost:5432
- Redis: localhost:6379
- PgAdmin: http://localhost:5050 (con
--profile admin)
Crea un archivo .env en la raíz del proyecto:
# JWT Secrets
JWT_ACCESS_SECRET=your-super-secret-access-key-here
JWT_REFRESH_SECRET=your-super-secret-refresh-key-here
# MercadoPago
MERCADOPAGO_ACCESS_TOKEN=your-mercadopago-access-token
MERCADOPAGO_PUBLIC_KEY=your-mercadopago-public-key
# URLs
FRONTEND_URL=http://localhost:3000
BACKEND_URL=http://localhost:3001
VITE_API_URL=http://localhost:3001- ✅ Configurar Prisma para la base de datos
- ✅ Implementar autenticación JWT
- ✅ Crear componentes UI adicionales
- ✅ Configurar CI/CD con GitHub Actions
- ✅ Implementar tests unitarios
- ✅ Configurar Docker para staging
- 🔄 Implementar tests de integración
- 🔄 Configurar monitoreo y logging
- 🔄 Optimizar performance
- 🔄 Implementar PWA
MIT