Skip to content

Latest commit

 

History

History
109 lines (76 loc) · 3.1 KB

File metadata and controls

109 lines (76 loc) · 3.1 KB

Bug Tracker API

Sistema de rastreamento de bugs em projetos de software com autenticação JWT e autorização por perfis.

Alunos

  • Julio Cesar Cosme Pinto

Tecnologias

Node.js 22, Express 4, TypeScript 5, TypeORM, PostgreSQL 17, JWT, bcryptjs, class-validator, Docker.

Como rodar

# Subir a aplicação
docker compose up --build -d

# Popular banco com dados de teste
docker compose --profile seed up seed

# Parar
docker compose down

API disponível em http://localhost:3000

Credenciais de teste (após seed)

Perfil Email Senha
Admin admin@bugtrack.com admin123
Developer joao@bugtrack.com dev123
Tester welson@bugtrack.com tester123
Reporter julio@bugtrack.com reporter123

Também é possível criar conta via POST /api/auth/register (perfil padrão: reporter).

Autenticação

Login via POST /api/auth/login retorna um JWT válido por 24h. Rotas protegidas exigem o header:

Authorization: Bearer <token>

Autorização (Perfis)

  • Admin: acesso total a todos os recursos (usuários, projetos, defeitos, observações).
  • Developer: visualiza projetos e usuários, cria defeitos e observações, atualiza apenas defeitos atribuídos a ele (status: em_progresso ou resolvido), deleta apenas suas observações.
  • Tester: visualiza projetos e usuários, cria defeitos e observações, altera status de defeitos apenas para fechado ou reaberto, deleta apenas suas observações.
  • Reporter: visualiza projetos, cria defeitos, cria observações apenas nos bugs que reportou, não lista/visualiza outros usuários (exceto a si mesmo), não atualiza defeitos, deleta apenas suas observações.

Endpoints

Autenticação — /api/auth

  • POST /register — Registrar (público)
  • POST /login — Login (público)
  • GET /me — Usuário logado

Usuários — /api/usuarios (autenticado)

  • GET / — Listar
  • GET /:id — Buscar por ID
  • PUT /:id/papel — Alterar perfil (admin)
  • DELETE /:id — Deletar (admin)

Projetos — /api/projetos (autenticado)

  • POST / — Criar (admin)
  • GET / — Listar
  • GET /:id — Buscar por ID
  • PUT /:id — Atualizar (admin)
  • DELETE /:id — Deletar (admin)

Defeitos — /api/defeitos (autenticado)

  • POST / — Criar
  • GET / — Listar (filtros: ?situacao=&prioridade=&projetoId=&responsavelId=)
  • GET /:id — Buscar por ID
  • PUT /:id — Atualizar
  • PATCH /:id/atribuir — Atribuir a developer (admin)
  • DELETE /:id — Deletar (admin)

Observações — /api (autenticado)

  • POST /defeitos/:defeitoId/observacoes — Criar
  • GET /defeitos/:defeitoId/observacoes — Listar
  • DELETE /observacoes/:id — Deletar

Health check: GET /health

Exemplos curl

# Login
curl -X POST http://localhost:3000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "admin@bugtrack.com", "senha": "admin123"}'

# Listar projetos
curl http://localhost:3000/api/projetos -H "Authorization: Bearer <token>"

# Criar defeito
curl -X POST http://localhost:3000/api/defeitos \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"titulo": "Erro no login", "projetoId": 1}'