Skip to content

kemtch19/taskify-backend

Repository files navigation

Taskify Logo

🌐 Sitio web | 🎨 Frontend

📝 Taskify Backend

taskify-backend es una API RESTful para una aplicación de gestión de tareas tipo To-Do List, desarrollada con Node.js, Express y MongoDB. Soporta autenticación con JWT, operaciones CRUD para usuarios, carpetas, listas y tareas, incluyendo funcionalidades como papelera de reciclaje para tareas.


📦 Tecnologías

  • Node.js
  • Express
  • MongoDB + Mongoose
  • JWT + cookies para autenticación
  • bcrypt para hashing de contraseñas
  • express-validator para validación
  • dotenv para configuración
  • Cloudinary para la subida de imágenes de perfil
  • MongoDB Atlas para base de datos en la nube
  • Render para despliegue gratuito del backend
  • UptimeRobot para mantener activo el servidor en Render

🚀 Instalación

git clone https://github.com/tu-usuario/taskify-backend.git
cd taskify-backend
npm install

▶️ Ejecución del servidor

npm run dev

Servidor disponible en: http://localhost:5000


📂 Estructura del proyecto

taskify-backend/
├── controllers/
│   ├── foldersController.js
│   ├── listsController.js
│   ├── tasksController/
│   │   ├── create.js
│   │   ├── get.js
│   │   ├── update.js
│   │   ├── trash.js
│   │   └── ...
│   └── usersController.js
├── models/
│   ├── Folder.js
│   ├── List.js
│   ├── Task.js
│   └── User.js
├── routes/
│   ├── foldersRoutes.js
│   ├── listsRoutes.js
│   ├── tasksRoutes.js
│   └── usersRoutes.js
├── middlewares/
├── validators/
├── config/
├── app.js
├── server.js
├── .env
└── README.md

📁 Endpoints disponibles

👤 Usuarios

Método Ruta Descripción
POST /api/users/register Registrar nuevo usuario
POST /api/users/login Iniciar sesión y obtener JWT
PATCH /api/users/change-pass Cambiar contraseña (requiere JWT)
GET /api/users/profile Obtener perfil del usuario autenticado
PUT /api/users/image Subir o actualizar imagen de perfil
GET /api/users/logout Cerrar sesión y eliminar cookie JWT

📂 Folders (Carpetas)

Método Ruta Descripción
POST /api/folders/create Crear una nueva carpeta
GET /api/folders Obtener todas las carpetas del usuario
PUT /api/folders/update/:id Actualizar nombre de una carpeta
DELETE /api/folders/delete/:id Eliminar una carpeta

🗃️ Lists (Listas)

Método Ruta Descripción
POST /api/lists/create Crear nueva lista dentro de una carpeta
GET /api/lists/folder/:folderId Obtener listas por carpeta
PUT /api/lists/update/:id Actualizar una lista
DELETE /api/lists/delete/:id Eliminar una lista
GET /api/lists/:id Obtener una lista por su ID

✅ Tasks (Tareas)

Método Ruta Descripción
POST /api/tasks/create Crear una nueva tarea
GET /api/tasks/list/:listId Obtener tareas activas de una lista
GET /api/tasks/:id Obtener una sola tarea
GET /api/tasks/search?q=texto Buscar tareas por título o descripción
GET /api/tasks/trash Obtener tareas archivadas
GET /api/tasks/date-range Obtener tareas entre fechas (start y end)
PATCH /api/tasks/toggle/:id Alternar estado completado/incompleto
PUT /api/tasks/archive/:id Archivar tarea (mover a papelera)
PUT /api/tasks/restore/:id Restaurar tarea desde papelera
PUT /api/tasks/move/:id Mover una tarea a otra lista
PUT /api/tasks/update/:id Actualizar contenido de una tarea
DELETE /api/tasks/delete/:id Eliminar permanentemente una tarea
DELETE /api/tasks/empty-trash Vaciar la papelera del usuario
GET /api/tasks Obtener todas las tareas del usuario
GET /api/tasks/completed Obtener tareas completadas

🧠 Notas

  • Todos los :id deben ser IDs válidos de MongoDB.
  • priority puede ser: "low", "medium" o "high".
  • Tareas archivadas no se incluyen en los listados normales, pero pueden restaurarse o eliminarse desde la papelera.
  • Tiene variables de entorno que .envexample que son importantes para la buena ejecución de este proyecto.

👨‍💻 Autores

kemtch19
kemtch19
Juankyyy
Juankyyy

About

API RESTful para una aplicación de gestión de tareas llamada Taskify

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •