API REST para gerenciamento de tarefas TODO com arquitetura limpa em Go.
- Go
- Gin
- sqlx + pgx
- PostgreSQL
- Docker + Docker Compose
cmd/api/ # ponto de entrada da aplicação
internal/domain/ # domínio (entidades e regras de negócio)
internal/domain/ports/ # contratos de portas do domínio
internal/infra/ # adapters de infraestrutura (HTTP e persistência)
internal/app/usecase/ # casos de uso (orquestração da aplicação)
migrations/ # migrations SQL versionadas
docker compose down --remove-orphans
docker compose up --buildServiços:
- API:
http://localhost:8080 - Postgres (host):
localhost:5433(configurável porDB_HOST_PORT)
Principais variáveis usadas pela API:
DATABASE_URL(obrigatória)PORT(opcional, default8080)
No compose já estão configuradas para ambiente local.
go test ./... -count=1Criar tarefa:
BASE_URL="http://localhost:8080"
curl -i -X POST "$BASE_URL/tasks" \
-H "Content-Type: application/json" \
-d '{"title":"Estudar Clean Architecture"}'Listar tarefas:
curl -i "$BASE_URL/tasks"Buscar por ID:
curl -i "$BASE_URL/tasks/TASK_ID"Atualizar:
curl -i -X PUT "$BASE_URL/tasks/TASK_ID" \
-H "Content-Type: application/json" \
-d '{"title":"Título atualizado"}'Excluir:
curl -i -X DELETE "$BASE_URL/tasks/TASK_ID"