🚀 Deploy do Pobre: Seu SaaS de Agendamento Gratuito com API Node.js e Front-end Next.js
Fala Dev doido! 😜 Hoje eu vou ensinar vocês a fazer o "deploy do pobre". Nesse vídeo tem o TUTORIAL COMPLETO!! O que é isso? É o deploy que você não paga nada pra lançar um SaaS de agendamento igual a esse aqui. Um SaaS social, um produto e uma rede social na mesma tela. Aqui você consegue fazer um "tweet", postar o que quiser, com upload e um monte de coisa! ✨
Você tem:
- Agendamentos 📅
- Estabelecimentos 🏪
- Um ecossistema completinho 🔗
Eu vou te mostrar do zero, passo a passo, como configurar a API e esse front top.
🧰 1. Preparando o Ambiente e Clonando o Repositório
- Vá no meu GitHub e clona o repositório (é um public template).
- Clique em "Use this template" → "Create a new repository" → Escolha o nome (ex:
Gendei-API
) 🧠 - Pode ser um SaaS para múltiplos estabelecimentos ou para um cliente específico (ex: Barbearia do Seu Zé) 💈
- Cria como privado (ou público) e clica em "Create repository" 🧪
- Clone o repositório na sua IDE, copia a URL e roda local 🎯
🔧 2. Configurando as Variáveis de Ambiente (.env
)
- Crie o arquivo
.env
- Copie o conteúdo do
env.example
-
Configure os campos:
-
JWT_SECRET
🔐 - Banco de dados obrigatório (MongoDB ou Postgres) 🛢️
- Redis (opcional) ⚡
- Gateway de pagamento: Pix via Woovi 💸
- Email: Provider via Resend ✉️
-
☁️ 3. Banco de Dados com MongoDB Atlas
- Crie a conta no Mongo Atlas 🌐
- Selecione o plano free 🆓
-
Configure variáveis:
MONGO_URL
MONGO_URL_PROD
Crie usuários, defina senha e monte a string de conexão 🧩
🧪 4. Rodando a API e Tratando Problemas
Provavelmente vão surgir erros:
- Redis ❌: comente a inicialização
- RabbitMQ ❌: comente o consumer
- Configure acesso à rede no MongoDB: use
0.0.0.0/0
(cuidado com segurança) 🔐
📬 5. Broker com RabbitMQ (CloudAMQP)
- Crie conta no CloudAMQP
- Plano gratuito: Little Lemur 🐒
- Copie a URL e configure
RABBITMQ_URL
-
Crie as filas (queues):
new-owner
resend-email-verification
validate-email
router-driver-finished
-
send-email-verification
📩
🔑 6. Gerar JWT Secret
- Use um gerador online e cole em
JWT_SECRET
(eJWT_REFRESH_SECRET
se quiser separar)
🔁 7. Redis com Upstash
- Crie conta no Upstash
- Crie o banco Redis
-
Configure
.env
:REDIS_HOST
REDIS_PORT
REDIS_PASSWORD
📷 8. Upload com Cloudflare R2
- Crie conta no Cloudflare
- Vá em "R2", crie bucket
-
Gere as credenciais e configure
.env
:CLOUDFLARE_ACCOUNT_ID
CLOUDFLARE_R2_ACCESS_KEY_ID
CLOUDFLARE_R2_SECRET_ACCESS_KEY
BUCKET_NAME
CLOUDFLARE_R2_PUBLIC_URL
🗺️ 9. Google Maps API Key
- Gere chave no Google Cloud Console
- Adicione no
.env
:Maps_API_KEY
📤 10. E-mails com Resend
- Crie conta no Resend
- Verifique domínio (adicione registros DNS)
-
Crie API Key e adicione ao
.env
:RESEND_API_KEY
EMAIL_FROM
EMAIL_PROVIDER=resend
🛰️ 11. Deploy da API no Fly.io
- Crie conta no Fly.io
- Instale CLI
flyctl
- Rode
flyctl launch
e siga as instruções - Configure
fly.toml
eDockerfile
- Use
flyctl secrets set
para as variáveis.env
- Rode
flyctl deploy
🚀
📡 12. Webhooks com Woovi
- Configure webhook para
charge.paid
- Adicione
WEBHOOK_SECRET
no Fly.io - Teste com simulação na própria Woovi 🔄
🌐 13. Deploy dos Fronts (Cliente e Estabelecimento) na Vercel
- Use os templates
CrazyStack-Client-NextJs
eCrazyStack-Estabelecimento-NextJs
-
Configure:
NEXT_PUBLIC_API_URL
NEXT_PUBLIC_URL
-
NEXT_PUBLIC_WHATSAPP_NUMBER
(para Estabelecimento) - E outros campos como
BUCKET_NAME
,MAPS_API_KEY
, etc.
🧼 14. Customizando o Front
- Edite arquivos
whitelabel.ts
e JSONs de landing pages - Troque imagens em
public/images
- Faça commit e push → Vercel redeploya automático ⚙️
🔗 15. Corrigindo Link de Verificação
- Na API, use
CLIENT_APP_URL
no.env
para montar o link de verificação correto (semlocalhost
)
🐘 16. Usando PostgreSQL com NeonDB (Opcional)
- Crie conta em NeonDB
- Configure string de conexão em
DATABASE_URL
- Rode os scripts SQL para criar tabelas
🏁 Considerações Finais
- Testa tudo: cadastro, login, agendamento, pagamento, e-mail, etc.
- Registra domínio personalizado e aponte para a Vercel
- Bora colocar o sistema no mundo! 🌎🔥