Configuração
Este guia descreve todas as variáveis de ambiente do template, como habilitar cada integração opcional e como fazer o deploy.
Variáveis de ambiente
Todas as variáveis ficam no arquivo .env (use .env.example como base).
| Variável | Obrigatória | Descrição |
|---|---|---|
DATABASE_URL |
Sim | Connection string do PostgreSQL usada pelo Prisma |
NEXTAUTH_SECRET |
Sim | Secret do NextAuth (gere com openssl rand -base64 32) |
NEXTAUTH_URL |
Sim | URL base da aplicação (ex.: http://localhost:3000) |
NEXT_PUBLIC_APP_URL |
Recomendada | URL pública do site, usada em metadata, sitemap e robots |
SITE_URL |
Recomendada | Fallback de NEXT_PUBLIC_APP_URL; mantenha as duas com o mesmo valor |
SITE_NAME |
Não | Nome do site exibido em títulos e metadata |
AUTHOR_NAME |
Não | Nome do autor padrão usado em metadata |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET |
Não | Login social com Google (habilitado só se definidas) |
RESEND_API_KEY / RESEND_FROM / INVITATION_TOKEN_SECRET |
Sim* | Convites fechados; obrigatório antes de convidar a equipe |
EMAIL_SERVER_HOST / EMAIL_SERVER_PORT / EMAIL_SERVER_USER / EMAIL_SERVER_PASSWORD / EMAIL_FROM |
Não | SMTP usado somente na recuperação de senha |
NEXT_PUBLIC_SANITY_PROJECT_ID |
Com Sanity | ID do projeto no Sanity |
NEXT_PUBLIC_SANITY_PROJECT_TITLE |
Não | Título exibido no Sanity Studio |
SANITY_API_KEY |
Com Sanity | Token de API do Sanity |
SANITY_HOOK_SECRET |
Não | Secret do webhook de revalidação do blog |
STRIPE_SECRET_KEY / STRIPE_PUBLISHABLE_KEY |
Com Stripe | Chaves da conta Stripe |
NEXT_PUBLIC_STRIPE_PRICE_STARTER / NEXT_PUBLIC_STRIPE_PRICE_PRO / NEXT_PUBLIC_STRIPE_PRICE_BUSINESS |
Com Stripe | IDs dos preços recorrentes exibidos em /pricing |
OPENAI_API_KEY |
Com OpenAI | Chave de API da OpenAI para os exemplos de IA |
GOOGLE_SITE_VERIFICATION |
Não | Código de verificação do Google Search Console |
Integrações
As integrações são ligadas e desligadas no arquivo integrations.config.tsx, na raiz do projeto:
const integrations = {
isSanityEnabled: true,
isStripeEnabled: false,
isOpenAIEnabled: false,
isMailchimpEnabled: false,
isAuthEnabled: true,
};
Quando uma integração está desligada, a UI exibe um aviso e as API routes correspondentes retornam 503.
Sanity CMS (blog)
- Crie um projeto em sanity.io e copie o Project ID.
- Preencha
NEXT_PUBLIC_SANITY_PROJECT_IDeSANITY_API_KEYno.env. - Ative
isSanityEnabledemintegrations.config.tsx. - Acesse o Studio em
/adminpara criar posts, autores e categorias. - (Opcional) Configure o webhook de revalidação seguindo o guia
SANITY_WEBHOOK_SETUP.mdna raiz do projeto.
Stripe (pagamentos)
- Crie uma conta em stripe.com e copie as chaves do modo de teste.
- Preencha
STRIPE_SECRET_KEY,STRIPE_PUBLISHABLE_KEYe os três IDsNEXT_PUBLIC_STRIPE_PRICE_*no.env. - Ative
isStripeEnabledemintegrations.config.tsx. - Confira os cards e o checkout em
/pricingusando as chaves de teste. - Entre como administrador e confira
/dashboard/financeiro. Essa página oferece uma visão operacional somente leitura de receita estimada, assinaturas, clientes, saldo e faturas recentes. Operações sensíveis continuam no Dashboard do Stripe.
Com isStripeEnabled: false, o servidor não consulta a API do Stripe: a página de preços bloqueia o checkout e o painel financeiro mostra as instruções de configuração. Nunca exponha STRIPE_SECRET_KEY ao cliente.
OpenAI (exemplos de IA)
- Gere uma chave em platform.openai.com.
- Preencha
OPENAI_API_KEYno.env. - Ative
isOpenAIEnabledemintegrations.config.tsx. - Os exemplos ficam disponíveis em
/ai-examples(requer usuário autenticado).
Interface do aplicativo
O padrão visual e de interação está documentado em DESIGN_SYSTEM.md, na raiz do projeto. Leia esse arquivo antes de criar ou alterar telas.
- Use ícones de
lucide-reactem navegação, botões, estados e cards. Não use emojis como ícones estruturais. - Mantenha controles clicáveis com pelo menos 44 × 44 px, foco visível e rótulos acessíveis.
- A barra lateral do dashboard é colapsável no desktop, persiste a preferência localmente e vira um painel móvel em telas pequenas.
- Prefira Server Components e isole interatividade em pequenos componentes client.
Deploy
O template funciona em qualquer plataforma que suporte Next.js (Vercel, Railway, Render etc.). Checklist geral:
- Configure todas as variáveis de ambiente na plataforma, incluindo
NEXT_PUBLIC_APP_URLeSITE_URLcom o domínio de produção. - Aponte
DATABASE_URLpara o banco de produção e rode as migrations comnpm run db:deploy(executaprisma migrate deploy). - O build (
npm run build) já rodaprisma generateautomaticamente viaprebuild. - Após o primeiro deploy, verifique
https://seu-dominio.com/sitemap.xmlehttps://seu-dominio.com/robots.txt. - Se usar Sanity, cadastre a URL de produção no CORS do projeto Sanity e configure o webhook de revalidação.