Sistema de gestao de academia (MVP) com Go + templ + HTMX + Tailwind + chi.
- Go 1.22
- templ (componentes de UI)
- HTMX para interacoes dinamicas
- Tailwind CSS (CDN no MVP, com build opcional)
- chi para roteamento HTTP
- Postgres
- sqlc + migrations
cmd/server # entrada da aplicacao
internal/app # bootstrap da aplicacao
internal/adapter # adaptadores (db, etc)
internal/http # rotas e handlers
internal/ports # portas (interfaces)
internal/service # casos de uso
internal/view # componentes (templ)
internal/domain # entidades e enums de dominio
db/migrations # migrations SQL
db/queries # queries sqlc
db/schema.sql # schema para sqlc
sqlc.yaml # config do sqlc
web/static # css/js estatico
web/tailwind # config do Tailwind (build opcional)
- Alunos
- Planos
- Assinaturas
- Pagamentos
- Relatorios
- Usuarios e autenticacao (tela inicial)
export DATABASE_URL="postgres://jaiu:secret@localhost:5432/jaiu?sslmode=disable"
go run ./cmd/serverAcesse: http://localhost:8080
Base (db + redis):
docker compose upProd (binario gerado):
docker compose -f docker-compose.yml -f docker-compose.prod.yml up --buildDev (air + templ + debug):
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --buildO dev expoe o debug do delve em localhost:40000.
O layout usa o CDN do Tailwind apenas em ambientes locais (APP_ENV=local/dev/test). Para prod, gere o CSS:
./scripts/tailwind.shIsso gera web/static/css/app.css. Garanta que o build rode o script e que APP_ENV esteja como production/prod para nao carregar o CDN.
Gere os componentes a partir dos arquivos .templ:
templ generateSe o binario templ nao estiver instalado:
go install github.com/a-h/templ/cmd/templ@latest
export PATH="$PATH:$(go env GOPATH)/bin"Atalho:
./scripts/templ.shSe preferir rodar via Docker:
docker run --rm -v "$PWD":/workspace -w /workspace ghcr.io/a-h/templ:latest generatedocker compose -f docker-compose.yml --profile migrate run --rm migrate./scripts/sqlc.shSe o binario sqlc nao estiver instalado:
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
export PATH="$PATH:$(go env GOPATH)/bin"Ou rode via Docker:
docker run --rm -v "$PWD":/workspace -w /workspace sqlc/sqlc:1.26.0 generateexport DATABASE_URL="postgres://jaiu:secret@localhost:5432/jaiu?sslmode=disable"
go run ./cmd/seed-user -email admin@academia.com -password 123456 -name "Admin" -role admin- CRUDs completos com validacoes
- Autenticacao (admin/operador) e controle de acesso
- Relatorios com filtros por periodo