pnpx create-next-app@latest [project-name] --example https://github.com/Darlley/saas-admin- Rename
.env-examplesto.env - Run
pnpm installto install the dependencies - Run
docker compose up -dor (setup a Supabase new project) to start the database
Note
Open database in http://localhost:8080/ with Adminer Container
- Set
PostgreSQLto System - Set
postgresto Server - Set
postgresto User - Set
postgresto Password - Set
postgresto Database
- Run
pnpm prisma db pushto setup the database - Run
pnpm prisma generateto generate the Prisma client - Run
npx auth secretto generate the secret key for the authentication - Copy the secret key and paste in the
.envfile - Run
pnpm devto start the application
- Go to
https://stripe.com/br - Create a new account
- Get the API keys (Publishable key and Secret key)
- Paste the API keys in the
.envfile
Note
Até o momento a autenticação está configurada com credenciais de acesso (email + password), se quiser configurar com outros métodos, como Google, GitHub, etc, basta gerar o secret key e configurar no .env
Ajuda e tutoriais
- Crie uma nova conta
- Faça login
Note
Após a criação da conta você pode verificar que haverá um novo cliente para o seu email no Dashboard do Stripe.
| Feature | Status |
|---|---|
| Cadastro de usuário | ✅ Concluído |
| Confirmação de email | ✅ Concluído |
| Erros customizados | ✅ Concluído |
| Login social GitHub | ✅ Concluído |
| Login social Google | ✅ Concluído |
| Link mágico | ❌ Não feito |
| 2FA | ❌ Não feito |
| Recuperação de senha | ✅ Concluído |
| Papéis de usuário (user e admin) |
- Navbar
- Hero
- Prova social
- Benefícios
- Funcionalidades
- Como funciona
- Planos / Preço
- Depoimentos
- FAQ
- CTA
- Footer
O maior diferencial deste template é a utilização do próprio dashboard do Stripe como um "backoffice". Através dos eventos de webhook, o usuário pode controlar os recursos de produtos, preços e clientes diretamente pelo dashboard do Stripe, eliminando a necessidade de desenvolver uma interface administrativa separada. Isso simplifica significativamente o gerenciamento e oferece uma solução robusta e integrada para o controle de pagamentos e assinaturas.
demo.mp4
Vídeo demonstrativo: https://www.threads.net/@darlleybbf/post/DBVWi6WRWu-
Note
O webhook é necessário para que o Stripe possa enviar os eventos de webhook para a aplicação.
- Download Stripe CLI (Webhook)
- Run
stripe login - Run
stripe listen --forward-to http://localhost:3000/api/webhook/stripe - Copy the webhook secret key and paste in the
STRIPE_WEBHOOK_SECRETin the.envfile
Note
Sugiro colocar os terminais da aplicação e do webhook um ao lado do outro.
- Acesse o dashboard do stripe
- Crie um novo produto e um novo preço em
Catalogo de Produtos - A oferta ficará visivel na landing page
- Acesse o dashboard da sua aplicação e vá na pagina
http://localhost:3000/dashboard/settings/billing
A criação e atualização de produtos monitora alterações
- no campo de
nomedo produto - no campo de
descriçãodo produto - no campo de
Lista de recursos de marketingdo produto
Note
O campo Lista de recursos de marketing do produto é usado para adicionar os items da lista de recursos do seu produto.
A criação e atualização de preços monitora alterações
- no campo de
valor - no campo de
moeda - no campo de
Período de faturamento - no campo de
metadados
Note
O campo de metadados do preço é usado para adicionar as limitações de uso da assinatura, como max_usuarios_limit, max_integracoes_limit, etc. e cada limite será listado em um componente de progresso. Para funcionar você configurar as mesmas chaves na variavel manualLimits no componente PageBilling.tsx.
Para testar o checkout você pode usrar o cartão de testes do próprio Stripe.
Important
O usuário pode se cadastrar em varias assinaturas ao mesmo tempo da mesma forma que no Stripe, mas somente a ultima é levada em consideração para a visibilidade dos cards na configuração da assinatura. Todas as assinaturas são listadas na página de configuração para o usuário. E ele tem total autonomia pelo portal do Stripe.
- No dashboard do Stripe, pequise por
Portal do cliente - Ative o
link de testeem "Ativar link de teste" - Ative
Os cliente podem alternar planos - Adicione todos os seus produtos
- Salve as alterações
- Na página de configuração da assinatura clique em "Atualizar plano"
Aqui está uma tabela de check-in baseada nas features que você forneceu:
| Feature | Status | Comentários |
|---|---|---|
| 🌐 App Router Next.js | ✅ Concluído | Estrutura de rotas implementada. |
| 🌐 Server Actions Next.js | ✅ Concluído | Estrutura de rotas implementada. |
| 🔐 Autenticação Auth.js com Linkedin, Google e GitHub | ✅ Concluído | Configuração de autenticação finalizada. |
| 💰 Pagamentos utilizando Stripe | ✅ Concluído | Integração com Stripe está completa; Mercado Pago em progresso. |
| 🎊 React Confetti para pagamentos concluídos | ✅ Concluído | Implementação para visualização de pagamentos. |
| 🎲 Banco de Dados Postgres Supabase | ✅ Concluído | Banco de dados está configurado e em uso. |
| 💨 ORM Prisma | ✅ Concluído | Modelo de dados implementado com sucesso. |
| ✅ Validação do Servidor usando Zod | ✅ Concluído | Regras de validação em implementação. |
| 🎨 Estilização com Tailwindcss e Shacn | ✅ Concluído | Design responsivo e estilizado. |
| 💰 Pagamentos utilizando Mercado Pago | ❌ Não Concluído | Integração com Stripe está completa; Mercado Pago em progresso. |

