Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

MariaCarolinass/taskflow-api

Repository files navigation

TaskFlow API

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.


Estrutura do projeto

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

Tecnologias

  • Node.js + Express
  • MongoDB Atlas + Mongoose
  • Redis (mensageria)
  • Joi (validação)
  • bcrypt (hash de senhas)
  • JWT (autenticação)
  • Docker / Docker Compose

Funcionalidades

  • 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

Configuração do Ambiente

Crie o arquivo .env

cp .env.example .env

Executando o projeto

Sem Docker

  1. Instalar dependências:
npm install
  1. Rodar API:
npm run dev

Com Docker

docker-compose up --build -d

A aplicação vai está rodando em:

http://localhost:3000/

Rotas da API

Autenticação

  • POST /api/v1/auth/register - registrar usuário
  • POST /api/v1/auth/login - login
  • POST /api/v1/auth/logout - logout

Usuários

  • GET /api/v1/users/ - listar todos
  • GET /api/v1/users/:id - buscar por ID
  • PUT /api/v1/users/:id - atualizar
  • DELETE /api/v1/users/:id - deletar

Tarefas

  • GET /api/v1/tasks/ - listar tasks
  • GET /api/v1/tasks/:id - buscar task
  • POST /api/v1/tasks/ - criar task
  • PATCH /api/v1/tasks/:id - atualizar
  • DELETE /api/v1/tasks/:id - deletar

Testes rápidos (curl)

  1. 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"}'
  1. 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"}'
  1. 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"}'
  1. Listar tarefas:
curl -X GET http://localhost:3000/api/v1/tasks -H "Authorization: Bearer <TOKEN>"
  1. 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"}'

Testando Redis

Ver mensagens publicadas

Execute:

docker exec -it redis redis-cli

Escutar todos os eventos criados:

PSUBSCRIBE *

Estrutura Clean Architecture

DTOs

  • Validam e padronizam dados recebidos nos services

Repositories

  • Isolam acesso ao MongoDB

Services

  • Contêm regras de negócio

Controllers

  • Recebem requisições e chamam os services

Contribuição

  1. Fork o projeto
  2. Crie sua feature branch (git checkout -b feature/xyz)
  3. Commit (git commit -m "feat: descrição")
  4. Push (git push origin feature/xyz)
  5. Abra Pull Request

Licença

MIT

About

API for user and task management with messaging microservice integration via Redis.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /