KLUK Backend
API backend para un e-commerce
API REST para una plataforma de comercio electrónico, desarrollada con NestJS 10 y TypeScript. Módulos de autenticación, usuarios, productos, carrito, favoritos y reportes, con subida de imágenes a Cloudinary (multer + streamifier) y documentación Swagger.
Contexto y propósito
API del e-commerce KLUK: catálogo de productos, carrito de compras, favoritos, usuarios con autenticación, reportes agregados y subida de imágenes a Cloudinary. NestJS 10 + TypeORM + PostgreSQL + JWT, con documentación Swagger.
Propósito declarado: Proveer la API y la persistencia necesarias para gestionar productos, carrito, favoritos, usuarios y reportes de un e-commerce.
Arquitectura
API modular NestJS 10 (auth, users, productos, carrito, favorites, reportes, cloudinary) con TypeORM + PostgreSQL, JWT + bcryptjs, validación con class-validator, Helmet, Swagger y subidas a Cloudinary.
Storefront / clientes ──REST + JWT──▶ KLUK API (NestJS 10) auth │ users │ productos │ carrito │ favorites │ reportes │ cloudinary ▼ PostgreSQL (TypeORM) + Cloudinary (media)
- Módulos por dominio (users, auth, productos, carrito, favorites, reportes, cloudinary) con validación class-validator y Helmet.
- Subidas con multer + streamifier hacia Cloudinary centralizado en módulo propio.
- Swagger (@nestjs/swagger) como documentación viva en /api.
Stack detallado
| Capa | Tecnología | Detalle |
|---|---|---|
| Framework | NestJS 10 + TS | Modular por dominio |
| BD | TypeORM 0.3 + PostgreSQL | Driver pg; synchronize:true solo dev |
| Auth | JWT + bcryptjs | Login + guards |
| Media | Cloudinary + multer | Imágenes de producto vía streamifier |
| Docs | Swagger | OpenAPI en /api |
Endpoints principales
| Método | Ruta | Qué hace | Auth |
|---|---|---|---|
CRUD | /productos | Catálogo de productos | JWT (escritura admin) |
CRUD | /carrito | Carrito por usuario | JWT |
CRUD | /favorites | Favoritos por usuario | JWT |
GET | /reportes/* | Agregados para dashboard | JWT admin |
CRUD | /users · /auth/* | Usuarios y login | Mixto |
GET | /api | Documentación Swagger | Ninguna |
Datos y conexiones
User 1──* Carrito 1──* Item *──1 Producto User *──* Favoritos ── Producto · Reportes = agregados SQL
Despliegue
Dónde: Render/Railway/VPS + PostgreSQL + Cloudinary
- npm install && npm run build && npm run start:prod
- Env: DB_HOST/PORT/USER/PASS/NAME, SSL, JWT_SECRET, CLOUDINARY_*
Metodología y decisiones
- Dominio e-commerce clásico para practicar NestJS a fondo.
- Swagger como documentación viva.
Retos y soluciones
Qué aprendí
- NestJS modular, guards y uploads a Cloudinary.
- Reportes agregados para dashboards.
Ejecutar en local
git clone https://github.com/xenoxf/kluk && npm install Configurar .env (DB_*, SSL, JWT_SECRET, CLOUDINARY_*) y npm run start:dev
Próximos pasos
- Pagos (Stripe/MercadoPago).
- Migraciones versionadas y tests e2e.