Receitas
Receitas
As partes que todo app precisa e nenhum framework decide por você — banco, sessão, upload, paginação, e-mail, tarefa agendada, Docker — com código que compila.
"Aprender" ensina o framework e "Referência" descreve cada símbolo. Esta seção responde a um terceiro tipo de pergunta, a que aparece no segundo dia: como eu faço a coisa que todo app faz? Abrir um banco, manter alguém logado, receber um arquivo, paginar uma lista, mandar um e-mail, rodar uma tarefa de hora em hora, colocar tudo isso num contêiner.
Nada disso é decisão do framework. Trilha não tem ORM, não tem store de sessão e não tem mailer — o que ele tem é um lugar para os seus, e é aqui que esse lugar está escrito.
| Página | O que responde | Receita |
|---|---|---|
| O app administrável | o que o trilha new --template app escreve, e a tarde que vai do comando à produção | oito delas |
| Banco de dados | pool, consultas, transação, migrações, sqlc | store |
| Sessões | login, cookie assinado, usuário atual, flash | login |
| Uploads | receber um arquivo, validar, guardar, devolver | blob |
| Planilhas (CSV) | exportar a planilha que o Excel abre, importar com o erro por célula | — |
| Formulário em passos | onde mora o passo 1 enquanto a pessoa está no passo 2 | — |
| Link público | um formulário preenchido sem login, e um código que confere um documento | — |
| Arquivos | onde um upload mora, como ele volta, e a varredura de órfãos | blob |
| Paginação | página e cursor, e o rodapé que vem com eles | — |
| SMTP em produção, o log em dev, um corpo vindo de template | mail | |
| Tarefas | fila, dedupe, retentativa com nome, a tela de andamento | tasks |
| Webhooks | entrega assinada, retentativa com espera crescente, o registro de cada tentativa | webhooks |
| Cobrança | planos, assinaturas numa máquina de estados fechada, o webhook assinado do provedor, dunning | billing |
| Notificações | o canal da pessoa, horário silencioso, digesto diário, limite por canal, a fila | notify |
| Backoffice | app/admin/ negado por padrão: usuários, auditoria, aprovações, busca | admin |
| Tarefas agendadas | um ticker que sobe com o app e para com ele | — |
| App instalável (PWA) | manifesto, ícones e um convite de instalação que se adapta ao navegador | pwa |
| Docker | uma imagem pequena, as variáveis, a sonda de saúde | — |
| Checklist de produção | o que conferir antes de publicar, em ordem | — |
| Chat de IA | a chave, o contexto da página, o histórico, o teste sem chave | — |
| Um agente de IA | ferramentas sobre os seus dados, escrita que espera alguém, os passos, o rastro | — |
| Migração | de net/http puro para Trilha, e entre versões menores | — |
| Do Next.js | o padrão de React que você conhece, e o que ocupa o lugar dele | — |
De onde vem o código#
Todo bloco Go destas páginas é copiado de um arquivo em examples/cookbook, que faz parte do módulo do repositório: go vet ./... compila esse código a cada rodada, e um teste do site confere que cada bloco continua aparecendo, caractere por caractere, no arquivo de onde saiu. Uma receita que para de compilar quebra o build antes de enganar alguém.
Isso tem um preço que vale conhecer: o pacote usa só a biblioteca padrão, como o resto do repositório. Então não há driver de banco, nem hash de senha, nem cliente de métricas dentro dele. Onde um deles é necessário, a página diz qual linha acrescentar e por que ela não está aqui.