API em Go
chi, pgx e queries tipadas com sqlc. Migrations versionadas e um envelope de erro único.
O contrato é a fonte de verdade: dele saem o servidor e o client. O que diverge não compila — em vez de aparecer em produção.
chi, pgx e queries tipadas com sqlc. Migrations versionadas e um envelope de erro único.
Um openapi.yaml gera o servidor e o client. Divergir do contrato quebra o build, não a produção.
App Router, Tailwind v4 e shadcn/ui, falando com a API por um BFF que nunca expõe a origem.
Redis para cache e rate limit por IP. Sem Redis a aplicação sobe igual — cache é aceleração, não dependência.
Sentry nas duas pontas, com PII podada na origem. O log guarda o detalhe; o alerta guarda o grupo.
pnpm workspaces e Turborepo: um comando levanta tudo, e o que não mudou não é rebuildado.
O domínio vive num lugar só, com tipos verificados em compilação e um perfil de latência previsível. O front consome o contrato, não o banco.
O openapi.yaml é a fonte de verdade: dele saem a interface do servidor em Go e o client TypeScript. Se um lado divergir, o build acusa antes do deploy.
Quase nada. É Astro: o HTML sai pronto do build e só este bloco de perguntas carrega JS, quando entra na tela.