API REST desarrollada con NestJS para la gestión de productos de café. Este proyecto implementa operaciones CRUD completas para administrar un catálogo de cafés con sus marcas y sabores.
iLuvCoffee es una aplicación backend construida con NestJS, un framework progresivo de Node.js para construir aplicaciones del lado del servidor eficientes y escalables. La aplicación proporciona una API RESTful para gestionar un inventario de cafés.
- CRUD completo de productos de café
- Arquitectura modular con NestJS
- DTOs para validación de datos
- Estructura escalable y mantenible
- TypeScript para type-safety
- Testing unitario y e2e configurado
- NestJS v7.0.0 - Framework principal
- TypeScript - Lenguaje de programación
- Express - Servidor HTTP
- Jest - Testing framework
- RxJS - Programación reactiva
src/
├── app.controller.ts # Controlador principal
├── app.module.ts # Módulo raíz
├── app.service.ts # Servicio principal
├── main.ts # Punto de entrada
└── coffees/ # Módulo de cafés
├── coffees.controller.ts # Controlador de cafés
├── coffees.service.ts # Lógica de negocio
├── coffees.module.ts # Módulo de cafés
├── dto/ # Data Transfer Objects
│ ├── create-coffee.dto.ts
│ └── update-coffee.dto.ts
└── entities/ # Entidades
└── coffee.entity.ts
- Node.js (v12 o superior)
- npm o yarn
# Clonar el repositorio
git clone <repository-url>
# Navegar al directorio
cd iluvcoffee
# Instalar dependencias
npm install# Modo desarrollo
npm run start:dev
# Modo producción
npm run build
npm run start:prod
# Modo debug
npm run start:debugLa aplicación estará disponible en http://localhost:3000
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /coffees |
Obtener todos los cafés |
| GET | /coffees/:id |
Obtener un café por ID |
| POST | /coffees |
Crear un nuevo café |
| PATCH | /coffees/:id |
Actualizar un café existente |
| DELETE | /coffees/:id |
Eliminar un café |
curl http://localhost:3000/coffeescurl -X POST http://localhost:3000/coffees \
-H "Content-Type: application/json" \
-d '{
"name": "Espresso",
"brand": "Lavazza",
"flavors": ["chocolate", "vanilla"]
}'curl -X PATCH http://localhost:3000/coffees/1 \
-H "Content-Type: application/json" \
-d '{
"name": "Espresso Premium"
}'curl -X DELETE http://localhost:3000/coffees/1{
id: number;
name: string;
brand: string;
flavors: string[];
}# Tests unitarios
npm run test
# Tests unitarios en modo watch
npm run test:watch
# Tests e2e
npm run test:e2e
# Cobertura de tests
npm run test:cov# Ejecutar linter
npm run lint
# Formatear código
npm run format| Script | Descripción |
|---|---|
npm run start |
Inicia la aplicación |
npm run start:dev |
Inicia en modo desarrollo con hot-reload |
npm run start:prod |
Inicia en modo producción |
npm run build |
Compila el proyecto |
npm run test |
Ejecuta tests unitarios |
npm run test:e2e |
Ejecuta tests end-to-end |
npm run lint |
Ejecuta el linter |
npm run format |
Formatea el código |
nest generate module <module-name>nest generate controller <controller-name>nest generate service <service-name>- Integración con base de datos (PostgreSQL/MongoDB)
- Autenticación y autorización
- Documentación con Swagger/OpenAPI
- Validación de DTOs con class-validator
- Paginación en endpoints de listado
- Filtros y búsqueda avanzada
- Manejo de errores global
- Variables de entorno con @nestjs/config
- Logging mejorado
- Rate limiting
- Compresión de respuestas
- CORS configurado
UNLICENSED - Proyecto privado
Desarrollado con ❤️ usando NestJS