API REST para gerenciamento de tarefas em times. Permite criar times, adicionar membros, criar e completar tarefas, e consultar o ranking de pontuação dos membros.
| Tecnologia | Versão |
|---|---|
| Go | 1.26 |
| Echo | v5 |
| GORM | v2 |
| MySQL | 8.x |
| JWT | golang-jwt/jwt v5 |
| Logger | go.uber.org/zap |
- Docker e Docker Compose
- Go 1.26+ (apenas para rodar testes ou o servidor localmente sem Docker)
As variáveis de ambiente já estão configuradas no docker-compose.yml para desenvolvimento local. Nenhuma configuração adicional é necessária.
docker compose up --buildIsso sobe três serviços em ordem:
- mysql — banco MySQL 8.4 com healthcheck
- migrate — roda as migrations (GORM AutoMigrate) e encerra
- api — servidor HTTP na porta configurada em
PORT
http://localhost:8080
Documentação interativa com todos os endpoints disponível em:
http://localhost:8080/docs
Os testes de integração sobem um container MySQL real via testcontainers-go. É necessário ter o Docker rodando.
go test -race -count=1 ./...
-count=1desativa o cache do Go para garantir que os containers sempre rodem frescos.
.
├── api/
│ ├── embed.go # Embeds openapi.yaml no binário
│ └── openapi.yaml # Spec OpenAPI 3.1
├── cmd/
│ ├── migrate/ # Binário de migration (GORM AutoMigrate)
│ └── server/ # Binário principal do servidor
├── internal/
│ ├── auth/ # Registro e login de usuários
│ ├── docs/ # Handler de documentação (Redocly + spec YAML)
│ ├── infra/ # Banco de dados, validação, erros HTTP
│ ├── middleware/ # JWT middleware
│ ├── tasks/ # CRUD de tarefas
│ ├── teams/ # Times, membros e ranking
│ ├── testhelper/ # Helpers de teste (container, transações, factories)
│ ├── users/ # Avatar de usuário e StorageProvider
│ └── validate/ # Validação de structs
├── docker-compose.yml
├── Dockerfile
└── SOLUTION.md # Decisões de design e trade-offs