API para gestión de proyectos, tableros, listas y tareas, construida con Node.js, Express y MongoDB siguiendo el patrón MVC.
- Node.js
- Express.js
- MongoDB + Mongoose
- Zod (validación de datos)
- JWT (autenticación, a implementar en Semana 2)
/models→ Modelos Mongoose/controllers→ Controladores/routes→ Rutas de Express/middlewares→ Middlewares personalizados/utils→ Utilidades (errores, helpers, etc.)app.js→ Configuración principalindex.js→ Entrada de la aplicación
POST /api/auth/register→ Registra un nuevo usuario (acceso público).POST /api/auth/login→ Inicia sesión, generaaccessTokenyrefreshToken(acceso público).POST /api/auth/refresh→ Genera un nuevoaccessTokenusando elrefreshTokenválido (requiere cookie con refresh).POST /api/auth/logout→ Cierra la sesión eliminando elrefreshToken(requiere autenticación).
GET /api/users→ Lista todos los usuarios (solo admin).GET /api/users/:id→ Obtiene un usuario.- admin → puede ver cualquiera.
- user → solo puede ver su propio perfil.
POST /api/users→ Crea un usuario (registro abierto).PUT /api/users/:id→ Actualiza un usuario.- admin → puede actualizar cualquiera.
- user → solo puede puede actualizar su propio perfil.
DELETE /api/users/:id→ Elimina un usuario- admin → puede eliminar cualquiera.
- user → solo puede puede eliminar su propio perfil.
GET /api/users/:id/boards→ Lista todos los tableros de un usuario- admin → puede ver tableros de cualquier usuario.
- user → solo puede ver sus propios tableros.
GET /api/users/:id/lists→ Lista todas las listas de un usuario- admin → puede ver listas de cualquier usuario.
- user → solo puede ver sus propias listas.
GET /api/users/:id/tasks→ Lista todas las tareas de un usuario- admin → puede ver tareas de cualquier usuario.
- user → solo puede ver sus propias tareas.
GET /api/boards→ Lista todos los boards- admin → devuelve todos los boards.
- user → devuelve solo los boards creados por él.
GET /api/boards/:id→ Obtiene un board por ID- admin → puede acceder a cualquier board.
- user → solo si es owner del board.
GET /api/boards/:id/lists→ Lista todas las listas de un board- admin → devuelve todas las listas del board.
- user → solo devuelve las listas de boards que le pertenecen.
POST /api/boards→ Crea un board (admin o user).PATCH /api/boards/:id→ Actualiza un board- admin → puede actualizar cualquier board.
- user → solo si es owner del board.
DELETE /api/boards/:id→ Elimina un board- admin → puede eliminar cualquier board.
- user → solo si es owner del board.
GET /api/lists/board/:boardId→ Lista todas las listas de un board- admin → puede ver las listas de cualquier board.
- user → solo puede ver listas de sus boards.
GET /api/lists/:id→ Obtiene una lista por ID- admin → puede ver cualquier lista.
- user → solo si pertenece a uno de sus boards.
GET /api/lists/:id/tasks→ Lista todas las tareas de una lista- admin → devuelve todas las tareas de la lista.
- user → solo devuelve tareas de listas que pertenecen a sus boards.
POST /api/lists→ Crea una lista- admin → en cualquier board.
- user → solo en sus propios boards.
PATCH /api/lists/:id→ Actualiza una lista- admin → puede actualizar cualquier lista.
- user → solo si pertenece a uno de sus boards.
DELETE /api/lists/:id→ Elimina una lista- admin → puede eliminar cualquier lista.
- user → solo si pertenece a uno de sus boards.
GET /api/tasks→ Lista todas las tareas- admin → devuelve todas las tareas.
- user → devuelve solo las tareas que pertenecen a listas de sus boards.
GET /api/tasks/:id→ Obtiene una tarea por ID- admin → puede ver cualquier tarea.
- user → solo si la tarea pertenece a listas de sus boards.
POST /api/tasks→ Crea una tarea- admin → en cualquier lista.
- user → solo en listas de sus boards.
PATCH /api/tasks/:id→ Actualiza una tarea- admin → puede actualizar cualquier tarea.
- user → solo si pertenece a listas de sus boards.
DELETE /api/tasks/:id→ Elimina una tarea- admin → puede eliminar cualquier tarea.
- user → solo si pertenece a listas de sus boards.
- Todos los endpoints requieren JWT válido.
- Si no se envía
Authorization: Bearer <token>→401 Unauthorized.
- admin → Puede acceder y modificar cualquier recurso (boards, lists, tasks, users).
- user → Solo puede acceder a:
- Sus propios boards.
- Lists que pertenecen a sus boards.
- Tasks que pertenecen a sus lists.
- Su propio perfil de usuario.
- IDs deben ser ObjectId válidos → si no,
400 Bad Request. - Si el recurso no existe (board, list, task, user) →
404 Not Found. - Si el usuario no tiene acceso al recurso →
403 Forbidden.