Skip to content

silvalnk/gin-clean-architecture-api-project

Repository files navigation

TODO API (Go + Gin)

API REST para gerenciamento de tarefas TODO com arquitetura limpa em Go.

Stack

  • Go
  • Gin
  • sqlx + pgx
  • PostgreSQL
  • Docker + Docker Compose

Estrutura do projeto

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

Subir com Docker Compose

docker compose down --remove-orphans
docker compose up --build

Serviços:

  • API: http://localhost:8080
  • Postgres (host): localhost:5433 (configurável por DB_HOST_PORT)

Variáveis de ambiente

Principais variáveis usadas pela API:

  • DATABASE_URL (obrigatória)
  • PORT (opcional, default 8080)

No compose já estão configuradas para ambiente local.

Testes

go test ./... -count=1

Exemplos de uso (curl)

Criar 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"

About

⚡ Go/Gin REST API built with Clean Architecture, DDD, SOLID, and TDD, powered by PostgreSQL (sqlx/pgx) and versioned migrations for reliability and long-term maintainability ❄️✨

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors