Sistema de rastreamento de bugs em projetos de software com autenticação JWT e autorização por perfis.
- Julio Cesar Cosme Pinto
Node.js 22, Express 4, TypeScript 5, TypeORM, PostgreSQL 17, JWT, bcryptjs, class-validator, Docker.
# Subir a aplicação
docker compose up --build -d
# Popular banco com dados de teste
docker compose --profile seed up seed
# Parar
docker compose downAPI disponível em http://localhost:3000
| Perfil | 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).
Login via POST /api/auth/login retorna um JWT válido por 24h. Rotas protegidas exigem o header:
Authorization: Bearer <token>
- 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.
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
# 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}'