Começando
Do clone ao primeiro login, rodando na sua máquina em poucos minutos.
Este guia leva você de zero até o template rodando no seu computador, com banco de dados e login funcionando. Nada aqui usa a nuvem: tudo roda local.
O que você precisa ter
- Node.js 22 ou mais novo. Confira com
node -v. - npm, que já vem junto com o Node.
- Um terminal e um editor de código.
Você não precisa de conta na Cloudflare para rodar localmente. A conta só entra na hora de publicar (veja a página de deploy).
Baixe o projeto
Clone o repositório e instale as dependências:
git clone <url-do-seu-repositorio> meu-app
cd meu-app
npm install
Crie o arquivo de segredos locais
Os segredos ficam em um arquivo chamado .dev.vars, que nunca vai para o Git. Copie o modelo:
cp .dev.vars.example .dev.vars
Abra o .dev.vars e troque o valor de BETTER_AUTH_SECRET por uma sequência longa e aleatória. Você pode gerar uma com:
openssl rand -base64 32
As outras chaves (Resend, Google, GitHub) são opcionais. Sem elas o template continua funcionando: os e-mails aparecem no terminal em vez de serem enviados.
Crie as tabelas do banco
O banco local é um D1 simulado, guardado na pasta .cloudflare/state. Aplique as migrations:
npm run db:migrate:local
Faça isso uma vez, e de novo sempre que você criar uma migration nova.
Rode o app
npm run dev
Abra http://localhost:3000. Se a porta 3000 estiver ocupada, use PORT=3001 npm run dev e ajuste BETTER_AUTH_URL no .dev.vars para a mesma porta.
Faça o primeiro login
Entre em Entrar e escolha o login por código. Digite seu e-mail e envie.
Como você ainda não configurou um serviço de e-mail, o código aparece no terminal onde o npm run dev está rodando, dentro de uma mensagem de e-mail simulada. Copie os seis dígitos, cole no formulário e pronto: você está logado, e a página Conta já mostra seus dados.
Usando o Claude Code
Se você usa o Claude Code, abra a pasta do projeto e rode:
/setup
O comando conversa com você, confere os pré-requisitos, cria o .dev.vars, aplica as migrations e sobe o servidor. O arquivo CLAUDE.md na raiz do projeto explica ao Claude as regras do template (por exemplo, que a configuração fica em cloudflare.config.ts e que não existe Wrangler), então ele já começa sabendo o que pode e o que não pode fazer.
Se algo der errado
- A porta está ocupada: use
PORT=3001 npm run dev. - Erro de tabela inexistente: rode
npm run db:migrate:localde novo. - Tipos dos bindings desatualizados: rode
npm run typecheck, que regenera os tipos antes de checar.
Próximo passo: entender onde cada coisa mora em Estrutura do projeto.