Sobre o projeto
O Go Performance Starter é um ponto de partida opinativo, com renderização no servidor, para pequenos produtos SaaS, combinando Go (Chi), templates templ, HTMX com Alpine.js, Tailwind CSS, Supabase (Autenticação + PostgreSQL) e Cloudflare. Sua aposta é a renderização no servidor com Go e JavaScript mínimo, onde orçamentos de performance e guardrails para agentes de IA são aplicados no CI, e não apenas descritos.
O que oferece
A autenticação usa email/senha do Supabase com validação de JWT no lado do servidor, e também suporta login anônimo de convidado, de modo que visitantes de demonstração recebem uma identidade real sem precisar se cadastrar. O multilocatário depende do Row Level Security do PostgreSQL: as claims do JWT da solicitação são transmitidas em todas as consultas por meio de uma transação scoped (SET LOCAL ROLE mais request.jwt.claims), de forma que auth.uid() seja resolvido dentro das políticas RLS e a camada de repositório não possa ignorar o escopo do tenant. O README nota que isso torna o Supabase load-bearing — uma autenticação vendor-neutral exigiria reescrever o middleware de auth, o helper de escopo RLS e as políticas.
A demo incluída tem o objetivo de exercitar a stack: uma vitrine /patterns com cada padrão HTMX/Alpine suportado, com demonstração ao vivo e código-fonte, e um quiz de arquitetura cujas respostas erradas viram flashcards salváveis por usuário, armazenados como linhas reais protegidas por RLS. Um job em segundo plano expira convidados inativos via API admin do Supabase.
Ferramentas de desenvolvimento cobrem templates templ type-safe compilados para Go, geração de código sqlc com padrão de repositório, hot reload via air, automação com Taskfile, golangci-lint, métricas Prometheus, logging estruturado com log/slog, health checks e CI/CD. Um sistema de design baseado em papéis usa tokens semânticos como bg-surface e text-muted-foreground, com dark mode invertendo tokens, e não componentes, além de verificações do CI contra raw grays e desvio dark:.
Orçamentos de performance
O README lista orçamentos aplicados: P95 de resposta abaixo de 100ms, tamanho do binário abaixo de 20MB, imagem Docker abaixo de 30MB, memória steady-state abaixo de 128MB e startup abaixo de 500ms, validados por task test:performance e task test:binary-size.
Desenvolvimento assistido por agente
O projeto traz uma constituição de IA em camadas: CLAUDE.md contém regras de halt-on-violation, enquanto .claude/engineering.md, workflow.md e stack.md carregam defaults de engenharia, processo e fatos da stack. AGENTS.md é gerado a partir dessas camadas por task agents:build, e o CI falha se houver drift. Recursos não triviais seguem fluxo de três passagens Architect → Coder → Reviewer. A única definição de done é a verificação de qualidade task ci quality gate (formatação, lint, testes race, verificações de drift, tamanho do binário, scan de vulnerabilidades), que os agentes devem cumprir sem reduzir patamares.
Architecture Decision Records (ADRs) possuem cada um uma seção Enforcement mapeando regras a verificações. task check:adr executa um suite determinística que verifica consequências testáveis de ADRs, incluindo scanner de segredos. Verificações começam como warnings e são promovidas a blocking após período limpo ou uma real catch. Dois hooks são blocking: uma Stop-gate impedindo agentes de finalizar turno com testes falhando ou blocker, e um guard PreToolUse impedindo edições manuais em ADRs existentes, AGENTS.md ou código gerado; ambos têm kill-switches. O README marca quais partes são load-bearing e quais são removíveis, incluindo instruções para podar toda a suite de enforcement.
O versions.json na raiz é descrito como um contrato público de consumo listando pins da stack; task versions:check falha se alguma key divergir de sua fonte no repositório, sendo aceitável adicionar keys, enquanto renomear ou remover é breaking change.
Começando e escopo
Pré-requisitos: Go 1.26+, Docker, Docker Compose, Task e Node.js 20+. Quick start cobre clonar, copiar .env.example, iniciar o banco, executar migrations, gerar tipos sqlc, instalar dependências Go e npm e lançar o servidor dev com hot reload, servindo na porta 4000 por padrão. Há configuração documentada de template de password-reset do Supabase (única vez). Tarefas disponíveis incluem dev, ci, build, test, coverage, performance, binary-size checks, lint, CSS build, Docker image build e vulnerability scanning. O projeto é lançado sob licença MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.