API RESTful moderna para autenticación y gestión de contenido personalizado, desarrollada con Node.js, Express y MongoDB.
- Arquitectura en Capas: Separación clara de responsabilidades (rutas, controladores, servicios, modelos)
- Autenticación Robusta: Sistema JWT con rotación de tokens de actualización
- Gestión de Contenido: Operaciones CRUD completas con soporte para contenido personalizado
- Validación de Entrada: Esquemas Zod para validar todas las entradas
- Seguridad: Implementación de mejores prácticas de seguridad (CORS, Helmet, sanitización)
- Manejo de Errores: Sistema robusto y consistente de manejo de errores
- Logging: Registro estructurado para facilitar la depuración
- Node.js v14+
- MongoDB v4+
-
Clonar el repositorio:
git clone <repositorio> cd oportal
-
Instalar dependencias:
npm install
-
Configurar variables de entorno (crear archivo
.env):NODE_ENV=development PORT=3000 MONGO_URI=mongodb://localhost:27017/oportal JWT_SECRET=your_jwt_secret_key_change_in_production JWT_ACCESS_EXPIRE=15m JWT_REFRESH_EXPIRE=7d COOKIE_SECRET=your_cookie_secret_key_change_in_production -
Iniciar el servidor:
- Para desarrollo:
npm run dev
- Para producción:
npm start
- Para desarrollo:
/src
/config # Configuraciones (base de datos, etc.)
/controllers # Controladores de ruta
/middleware # Middleware (auth, validación, errores)
/models # Modelos de datos Mongoose
/routes # Definiciones de rutas
/schemas # Esquemas de validación Zod
/services # Lógica de negocio
/utils # Utilidades (tokens, logger, etc.)
app.js # Configuración de Express
server.js # Punto de entrada
POST /api/v1/auth/register- Registrar nuevo usuarioPOST /api/v1/auth/login- Iniciar sesiónPOST /api/v1/auth/logout- Cerrar sesión (requiere autenticación)POST /api/v1/auth/refresh- Actualizar token de accesoPATCH /api/v1/auth/update-password- Actualizar contraseña (requiere autenticación)GET /api/v1/auth/me- Obtener usuario actual (requiere autenticación)
GET /api/v1/content- Obtener lista de contenido (con filtros)POST /api/v1/content- Crear nuevo contenidoGET /api/v1/content/:id- Obtener contenido por IDPATCH /api/v1/content/:id- Actualizar contenidoDELETE /api/v1/content/:id- Eliminar contenidoGET /api/v1/content/me- Obtener contenido del usuario actualGET /api/v1/content/user/:userId- Obtener contenido de un usuario específico
GET /api/v1/users/me- Obtener perfil del usuario actualPATCH /api/v1/users/me- Actualizar perfil del usuario actualDELETE /api/v1/users/me- Desactivar cuenta del usuario actual
GET /api/v1/users- Listar todos los usuariosGET /api/v1/users/:id- Obtener un usuario específicoPATCH /api/v1/users/:id- Actualizar un usuario específicoDELETE /api/v1/users/:id- Desactivar un usuario específico
La API implementa las siguientes medidas de seguridad:
- Protección CORS: Configurado para aceptar solicitudes solo de orígenes permitidos
- Headers de Seguridad: Implementación con Helmet
- Autenticación JWT: Tokens de acceso de corta duración (15 minutos) y tokens de actualización de larga duración (7 días)
- Rotación de Tokens: Implementación de rotación de tokens de actualización
- HTTP-Only Cookies: Tokens almacenados en cookies HTTP-only
- Sanitización de Entradas: Prevención de inyecciones NoSQL
- Limitación de Velocidad: Protección contra ataques de fuerza bruta
- Validación de Datos: Validación estricta con Zod
La API permite:
- Crear contenido general o personalizado para usuarios específicos
- Filtrar contenido basado en preferencias del usuario
- Gestionar y actualizar preferencias de usuario
- Acceder a contenido personalizado específicamente para cada usuario
Para más detalles sobre la implementación y uso de la API, consultar la documentación en línea o contactar al equipo de desarrollo.