TaskFlow API é uma aplicação Node.js desenvolvida para gerenciar tarefas utilizando arquitetura limpa com Controller, Service, Repository, DTO, Middleware e banco de dados MongoDB Atlas.
A API conta com autenticação via JWT, validação com Joi, mensagens publicadas em Redis e um worker para processar eventos.
taskflow-api/
├─ src/
│ ├─ controllers/
│ ├─ db/
│ ├─ services/
│ ├─ repositories/
│ ├─ dtos/
│ ├─ models/
│ ├─ middlewares/
│ ├─ validators/
│ ├─ routes/
│ └─ views/
├─ worker/
├─ .env.example
├─ Dockerfile
├─ docker-compose.yml
├─ package.json
├─ server.js
└─ app.js
- Node.js + Express
- MongoDB Atlas + Mongoose
- Redis (mensageria)
- Joi (validação)
- bcrypt (hash de senhas)
- JWT (autenticação)
- Docker / Docker Compose
- CRUD de usuários e tarefas
- Autenticação JWT
- RBAC (controle de acesso por papel)
- Validação de dados com Joi
- Logging de requisições
- Worker que consome eventos de tarefas via Redis
cp .env.example .env
- Instalar dependências:
npm install
- Rodar API:
npm run devdocker-compose up --build -d
A aplicação vai está rodando em:
http://localhost:3000/
POST /api/v1/auth/register- registrar usuárioPOST /api/v1/auth/login- loginPOST /api/v1/auth/logout- logout
GET /api/v1/users/- listar todosGET /api/v1/users/:id- buscar por IDPUT /api/v1/users/:id- atualizarDELETE /api/v1/users/:id- deletar
GET /api/v1/tasks/- listar tasksGET /api/v1/tasks/:id- buscar taskPOST /api/v1/tasks/- criar taskPATCH /api/v1/tasks/:id- atualizarDELETE /api/v1/tasks/:id- deletar
- Criar usuário:
curl -X POST http://localhost:3000/api/v1/auth/register -H "Content-Type: application/json" -d '{"name":"Carol","email":"carol@example.com","password":"123456","role":"admin"}'
- Login (copiar token):
curl -X POST http://localhost:3000/api/v1/auth/login -H "Content-Type: application/json" -d '{"email":"carol@example.com","password":"123456"}'
- Criar tarefa:
curl -X POST http://localhost:3000/api/v1/tasks -H "Content-Type: application/json" -H "Authorization: Bearer <TOKEN>" -d '{"title": "Task 1", "description": "Descrição da task", "dueDate": "2025-12-20"}'
- Listar tarefas:
curl -X GET http://localhost:3000/api/v1/tasks -H "Authorization: Bearer <TOKEN>"
- Atualizar tarefa:
curl -X PUT http://localhost:3000/api/v1/tasks/<TASK_ID> -H "Content-Type: application/json" -H "Authorization: Bearer <TOKEN>" -d '{"title": "Task 1 Atualizada", "description": "Nova descrição", "status": "in-progress", "dueDate": "2025-12-22"}'
Execute:
docker exec -it redis redis-cli
Escutar todos os eventos criados:
PSUBSCRIBE *
- Validam e padronizam dados recebidos nos services
- Isolam acesso ao MongoDB
- Contêm regras de negócio
- Recebem requisições e chamam os services
- Fork o projeto
- Crie sua feature branch (
git checkout -b feature/xyz) - Commit (
git commit -m "feat: descrição") - Push (
git push origin feature/xyz) - Abra Pull Request
MIT