API backend do GymFlow construída em Go com Clean Architecture.
- Go 1.22+
- PostgreSQL
- golangci-lint (para lint)
- golang-migrate (para migrations)
-
Clone o repositório:
git clone https://github.com/gabriela-miranda-leite/gymflow-api.git cd gymflow-api -
Suba o banco de dados com Docker:
docker-compose up -d
-
Copie o arquivo de variáveis de ambiente:
cp .env.example .env
Edite
.envcom suas configurações locais. -
Instale o
airpara hot reload:go install github.com/air-verse/air@latest
-
Inicie o servidor em modo desenvolvimento:
make run
Execute os testes e gere o relatório de cobertura:
make testIsso gera dois arquivos:
coverage.out— dados brutos de coberturacoverage.html— relatório visual (abra no browser para ver quais linhas foram testadas)
func TestNomeDoComportamento(t *testing.T) {
// Arrange — prepara os dados
// Act — executa o que está sendo testado
// Assert — verifica o resultado com testify
assert.Equal(t, expected, got)
}Instale o hook para que o lint rode automaticamente antes de cada commit:
pre-commit install| Comando | Descrição |
|---|---|
make run |
Inicia o servidor em modo desenvolvimento |
make build |
Compila o binário em bin/api |
make test |
Executa os testes |
make lint |
Executa o linter |
make migrate-up |
Aplica as migrations pendentes |
make seed |
Popula o banco com dados iniciais |
cmd/api/ ← entry point (main.go)
internal/
domain/ ← entidades e interfaces (zero deps externos)
usecase/ ← regras de negócio
infra/
http/ ← handlers, router, middleware
db/ ← queries SQL, repositórios
pkg/ ← utilitários reutilizáveis (jwt, hash, validator)
migrations/ ← arquivos .sql versionados