Backend profesional para ecommerce de tienda de ropa construido con Node.js, Express y MongoDB.
- Arquitectura en Capas con patrón Repository
- Autenticación JWT con encriptación bcrypt
- Validación de datos con Joi
- Middleware de seguridad y manejo de errores
- Integración MercadoPago para pagos
- MongoDB Atlas como base de datos
- API RESTful con endpoints completos
ecommerce-backend/
├── src/
│ ├── config/ # Configuraciones (DB, MercadoPago)
│ ├── controllers/ # Manejo de HTTP requests
│ ├── services/ # Lógica de negocio
│ ├── repositories/ # Acceso a datos
│ ├── models/ # Esquemas de MongoDB
│ ├── routes/ # Definición de endpoints
│ ├── middlewares/ # Auth y manejo de errores
│ ├── utils/ # Validaciones y utilidades
│ └── index.js # Punto de entrada
├── package.json # Dependencias
├── .env # Variables de entorno
└── README.md # Documentación
Request → Middlewares → Controllers → Services → Repositories → MongoDB
- Request HTTP llega al servidor Express
- Middlewares procesan CORS, autenticación JWT y validación
- Routes direccionan a los controllers apropiados
- Controllers reciben req/res y delegan a services
- Services ejecutan lógica de negocio pura
- Repositories manejan operaciones CRUD de base de datos
- Response formateada se envía al cliente
Categoría | Tecnología | Versión | Propósito |
---|---|---|---|
Runtime | Node.js | 16+ | Entorno de ejecución |
Framework | Express.js | ^4.18.2 | Servidor web |
Base de Datos | MongoDB + Mongoose | ^7.5.0 | NoSQL + ODM |
Autenticación | JWT + bcrypt | ^9.0.2 | Tokens + encriptación |
Validación | Joi | ^17.9.2 | Validación de esquemas |
Pagos | MercadoPago | ^1.5.17 | Procesamiento de pagos |
Seguridad | CORS | ^2.8.5 | Cross-origin requests |
Variables | dotenv | ^16.3.1 | Variables de entorno |
POST /api/auth/register
{
"name": "Juan Pérez",
"email": "juan@email.com",
"password": "mipassword123"
}
Response:
{
"success": true,
"message": "Usuario registrado exitosamente",
"data": {
"user": { ... },
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
POST /api/auth/login
{
"email": "juan@email.com",
"password": "mipassword123"
}
Response:
{
"success": true,
"message": "Login exitoso",
"data": {
"user": { ... },
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
Authorization: Bearer {tu_token_aqui}
GET /api/users/profile
PUT /api/users/profile
GET /api/users
Todas requieren header:
Authorization: Bearer {token}
git clone <repository-url>
cd ecommerce-backend
npm install
Crear archivo .env
:
# Desarrollo (con nodemon)
npm run dev
# Producción
npm start
Capa | Responsabilidad | Ejemplo |
---|---|---|
Controllers | Manejo HTTP requests/responses | Recibir datos, validar, responder |
Services | Lógica de negocio pura | Encriptar password, generar JWT |
Repositories | Operaciones CRUD de BD | findByEmail, create, update |
Models | Esquemas y validaciones | Definir estructura User |
Middlewares | Funciones transversales | Verificar JWT, manejar errores |
Utils | Utilidades reutilizables | Validaciones Joi, helpers |
- Contraseñas encriptadas con bcrypt (hash irreversible)
- Autenticación JWT stateless
- Validación de datos con Joi
- CORS configurado para requests cross-origin
- Manejo de errores centralizado
- Variables de entorno para datos sensibles
- Agregar documentación Swagger
- Deploy a producción
- Integración completa MercadoPago
- Sistema de notificaciones
- Fork el proyecto
- Crear feature branch (
git checkout -b feature/nueva-funcionalidad
) - Commit cambios (
git commit -m 'Agregar nueva funcionalidad'
) - Push al branch (
git push origin feature/nueva-funcionalidad
) - Crear Pull Request
Equipo de Desarrollo | Fatal-error