Backend REST para gestionar usuarios, casos, agentes y libros del universo de la City Watch. El proyecto está orientado a practicar backend con Node.js, Express, MongoDB/MongoAtlas y autenticación JWT.
- API REST con Express.
- Base de datos MongoDB/MongoAtlas con Mongoose.
- Autenticación JWT y permisos por rol.
- Gestión de usuarios con imagen de perfil.
- Subida de imágenes a Cloudinary.
- Relaciones entre
User,Case,AgentyBook. - Seeds para generar datos iniciales.
- Documentación técnica y de requisitos separada por temas.
- Node.js
- npm
- MongoDB/MongoAtlas
- Cuenta Cloudinary
- Instala dependencias:
npm install- Crea un archivo
.enva partir de.env.example:
DB_URL=mongodb+srv://...
PORT=3000
APP_URL=http://localhost:3000
JWT_SECRET=your_secret
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret- Ejecuta el servidor en modo desarrollo:
npm run dev- La API estará disponible en:
http://localhost:3000
Base de la API:
/api/v1
- Node.js — entorno de ejecución del backend.
- Express — servidor HTTP y rutas de la API.
- MongoDB / MongoAtlas — base de datos principal.
- Mongoose — modelado y consultas con MongoDB.
- JWT — autenticación y autorización basada en tokens.
- bcrypt — hash y comparación segura de contraseñas.
- Cloudinary — almacenamiento y gestión de imágenes.
- Multer — manejo de archivos multipart/form-data.
- Multer Storage Cloudinary — integración de subida de archivos con Cloudinary.
- Nodemailer — envío de emails para recuperación de contraseña.
- Insomnia — pruebas manuales de la API.
- express — framework para la API REST.
- mongoose — ODM para MongoDB.
- jsonwebtoken — generación y validación de tokens JWT.
- bcrypt — encriptación de contraseñas.
- dotenv — carga de variables de entorno.
- cloudinary — gestión de imágenes.
- multer — subida de archivos.
- multer-storage-cloudinary — almacenamiento de archivos subidos en Cloudinary.
- nodemailer — envío de correos.
- nodemon — reinicio automático del servidor durante el desarrollo.
npm run dev
npm run seednpm run dev: ejecuta el servidor en desarrollo.npm run seed: crea datos iniciales para las colecciones semilladas. El proyecto incluye seeds paraAgentyCase; antes de ejecutarlas debe existir un usuario admin en MongoAtlas.
El proyecto incluye seeds para Agent y Case.
Antes de ejecutarlas debe existir un usuario admin en MongoAtlas. El primer administrador se crea registrando un usuario normal y cambiando manualmente su role a "admin".
npm run seed- docs/justificacion-requisitos.md — Requisitos del proyecto y cumplimiento.
- docs/dev-notes.md — Decisiones técnicas, reglas de negocio y notas de implementación.
- docs/autenticacion-y-passwords.md — Flujo de login, JWT y recuperación de contraseña.
- docs/pruebas-manuales-insomnia.md — Guía de pruebas manuales con Insomnia.
- docs/README.md — Índice de documentación del proyecto.
.envdebe mantenerse fuera del repositorio.- El proyecto debe publicarse en GitHub antes de la entrega.
- Las credenciales reales de base de datos, JWT y Cloudinary deben compartirse de forma privada cuando sea necesario.