LastSaaS
Kit inicial / boilerplate SaaS: abrangente, faturamento Stripe, gerenciamento de produtos, multi-inquilino; controles agentivos via MCP
Documentação
LastSaaS
O último boilerplate SaaS que você vai precisar.
LastSaaS é uma base SaaS completa e pronta para produção, construída inteiramente por meio de conversa com o Claude Code. Ele oferece gerenciamento de contas multi-tenant, autenticação, controle de acesso baseado em papéis, branding white-label, cobrança via Stripe, chaves de API, webhooks de saída, uma interface administrativa completa, monitoramento de saúde do sistema, rastreamento de uso baseado em créditos e analytics de produto com telemetria — tudo o que você precisa para lançar um negócio SaaS, pronto para personalizar para o seu produto específico.
O gargalo para construir software não é mais a capacidade de engenharia — é a imaginação. LastSaaS prova isso: uma única pessoa com uma visão clara e um agente de IA pode montar o que antes exigia uma equipe e meses de trabalho. E como foi construído com o Claude Code, o código está pronto para fork com engenharia orientada por agentes — aponte um agente de IA para ele e continue construindo seu produto por meio de conversa.
Por que o LastSaaS Existe
Todo produto SaaS precisa da mesma base entediante: contas de usuário, equipes, papéis, autenticação, painéis administrativos, cobrança, limites de uso, branding, webhooks, chaves de API. Historicamente, construir essa base significava semanas de trabalho de infraestrutura antes de você poder escrever uma única linha do seu produto real.
O LastSaaS elimina isso. Faça um fork, aponte um agente de IA para ele e comece a construir seu produto sobre uma base que já lida com:
- Isolamento multi-tenant com acesso baseado em papéis
- Autenticação JWT com rotação de refresh tokens
- Integração OAuth com Google, GitHub e Microsoft
- Autenticação sem senha via magic link
- MFA/TOTP com códigos de recuperação
- Verificação de e-mail e redefinição de senha
- Convites de equipe e gerenciamento de membros
- Cobrança Stripe com assinaturas, preço por assento, testes gratuitos e pacotes de créditos
- Direitos de plano e middleware de aplicação de cobrança
- Branding white-label com temas personalizados, logotipos, landing pages e páginas personalizadas
- Autenticação por chave de API (escopos de admin e usuário)
- Webhooks de saída com 19 tipos de eventos e assinatura HMAC-SHA256
- Rastreamento de uso baseado em créditos (assinatura + pacotes comprados)
- Códigos promocionais e gerenciamento de cupons via Stripe
- Painel de analytics de produto (funil de conversão, KPIs, coortes de retenção, métricas de engajamento)
- Sistema de eventos de telemetria com SDK Go e API REST para rastreamento de eventos personalizados
- Uma interface administrativa completa para gerenciar tudo
- Documentação de API integrada (HTML e Markdown)
- Monitoramento de saúde do sistema em tempo real
- Painel de métricas financeiras (receita, ARR, DAU, MAU)
- Servidor MCP (Model Context Protocol) para acesso administrativo com IA
- Ferramentas de CLI para administração do servidor
- Versionamento automático com migrações de banco de dados
- Implantação em produção no Fly.io
Esta é uma infraestrutura de código aberto para a era de agentes no desenvolvimento de software — onde a pessoa com a ideia também é a pessoa que a entrega. O código segue padrões consistentes que os agentes de IA navegam com fluência, para que você possa continuar evoluindo da mesma forma que foi construído.
Como Ele se Compara
Se você está avaliando boilerplates SaaS, provavelmente já viu ShipFast, Supastarter, MakerKit, SaaS Pegasus e Gravity. Veja por que fundadores técnicos escolhem o LastSaaS.
Gratuito e de código aberto. ShipFast custa $169, MakerKit custa $199–599, Supastarter começa em $299, SaaS Pegasus cobra $249/ano e Gravity custa menos de $1K. O LastSaaS é licenciado sob MIT — faça um fork, lance, nunca pague taxa de licença. Você é dono do código por completo.
Backend em Go, não outro projeto Next.js. ShipFast, Supastarter, MakerKit e Gravity são todos stacks JavaScript/TypeScript. SaaS Pegasus usa Django. O LastSaaS combina um backend em Go com um frontend React + TypeScript — oferecendo implantação com binário compilado, baixo consumo de memória (um container Alpine de 14MB) e o modelo de concorrência pelo qual Go é conhecido. Se o seu SaaS vai lidar com tráfego real ou você quer um backend que não seja um monólito Node.js, isso importa.
Multi-tenancy genuíno. ShipFast não tem multi-tenancy. SaaS Pegasus e Gravity oferecem recursos básicos de equipe, mas não isolamento real de tenants. O LastSaaS oferece arquitetura multi-tenant completa: isolamento de dados por tenant, RBAC de três níveis (owner/admin/user), convites de equipe, transferência de propriedade, logs de atividade por tenant e cobrança por tenant. Essa é a diferença entre "usuários podem colaborar" e "cada cliente tem seu próprio workspace isolado".
Branding white-label integrado. A maioria dos boilerplates oferece no máximo um alternador de tema. O LastSaaS inclui um sistema white-label completo: nome do aplicativo personalizado, logotipo, cores, fontes, landing page, páginas personalizadas, injeção de CSS, favicon, navegação configurável com controle por direitos e personalização da página de autenticação. Se você está construindo uma plataforma onde os clientes veem a sua marca (não a sua marca mais um framework), isso economiza semanas.
Webhooks de saída, não apenas webhooks do Stripe. Nenhuma das alternativas — ShipFast, Supastarter, MakerKit, SaaS Pegasus ou Gravity — inclui um sistema de webhooks de saída. O LastSaaS vem com 19 tipos de eventos em cobrança, ciclo de vida de equipe, ciclo de vida de usuário, créditos e eventos de segurança, com assinatura HMAC-SHA256, rastreamento de entrega e eventos de teste. Seus clientes podem se integrar à sua plataforma desde o primeiro dia.
Chaves de API com acesso por escopo. ShipFast, Supastarter e MakerKit não incluem gerenciamento de chaves de API. O LastSaaS fornece chaves de API com prefixo lsk_ e escopos de autoridade admin e usuário, armazenamento com hash SHA-256 e rastreamento de último uso — prontas para seus clientes construírem integrações.
Monitoramento de saúde e painéis financeiros. Nenhum boilerplate concorrente inclui monitoramento de saúde do sistema. O LastSaaS coleta métricas de CPU, memória, disco, HTTP e MongoDB a cada 60 segundos em todos os nós, com 8 gráficos em tempo real, alertas por limite e retenção de 30 dias. O painel financeiro oferece séries temporais de receita, ARR, DAU e MAU prontas para uso.
Analytics de produto com telemetria. Nenhum boilerplate concorrente inclui analytics de produto. O LastSaaS instrumenta automaticamente a jornada do cliente — visitante → cadastro → página de planos → checkout → conversão paga → upgrade — e a visualiza como um funil de conversão. O painel de PM inclui KPIs de SaaS (MRR, ARR, ARPU, LTV, taxa de churn, conversão de teste), análise de coortes de retenção, métricas de engajamento (DAU/WAU/MAU para assinantes pagantes) e um explorador de eventos personalizados. Um SDK Go e uma API REST permitem rastrear seus próprios eventos com zero configuração.
Servidor MCP para operações nativas de IA. Isso é exclusivo do LastSaaS. Um servidor Model Context Protocol integrado com 32 ferramentas somente leitura permite conectar o Claude (ou qualquer IA compatível com MCP) diretamente ao seu aplicativo em execução. Consulte sua tendência de ARR, investigue picos de erros, audite chaves de API ou revise a saúde do sistema — tudo em linguagem natural. Nenhum outro boilerplate SaaS oferece acesso administrativo orientado por agentes.
Construído para desenvolvimento assistido por IA. O LastSaaS foi construído inteiramente por meio de conversa com o Claude Code, e o código foi projetado para continuar sendo construído dessa forma. Padrões consistentes, nomenclatura clara e uma estrutura que os agentes de IA navegam com fluência. Faça um fork, aponte um agente para ele, descreva seu produto e continue. Os boilerplates concorrentes foram construídos para desenvolvimento manual — o LastSaaS foi construído para a forma como o software é feito hoje.
| LastSaaS | ShipFast | Supastarter | MakerKit | Pegasus | Gravity | |
|---|---|---|---|---|---|---|
| Preço | Gratuito (MIT) | $169 | $299+ | $199–599 | $249/ano | <$1K |
| Stack | Go + React | Next.js | Next.js / Nuxt | Next.js | Django | Node + React |
| Multi-Tenancy | RBAC completo | — | ✓ | ✓ | Somente equipes | Somente equipes |
| White-Label | Completo | — | Parcial | Parcial | — | — |
| Webhooks | 19 eventos | — | — | — | — | — |
| Chaves de API | Com escopo | — | — | — | Básico | — |
| Monitoramento de Saúde | 8 gráficos | — | — | — | — | — |
| Analytics de Produto | Painel PM com 5 abas | — | — | — | — | — |
| Sistema de Créditos | Dois buckets | — | — | Básico | — | — |
| Servidor MCP | 26 ferramentas | — | — | — | — | — |
| Painel Administrativo | Completo | — | ✓ | ✓ | ✓ | Básico |
| Cobrança Stripe | Completa | ✓ | ✓ | ✓ | ✓ | ✓ |
Recursos
Autenticação e Identidade
- Registro com e-mail/senha com hash bcrypt
- Verificação de e-mail via Resend
- OAuth com Google, GitHub e Microsoft com vinculação automática de contas
- Login sem senha via magic link por e-mail
- Autenticação de dois fatores MFA/TOTP com assistente de configuração
- Códigos de recuperação para acesso de backup do MFA
- Tokens de acesso JWT (30min) + refresh tokens (7 dias) com rotação
- Bloqueio de conta após tentativas de login falhas
- Fluxo de redefinição de senha com tokens seguros
- Reforço de força de senha
- Gerenciamento de sessões — liste sessões ativas, revogue sessões individuais ou todas
- Revogação de sessão ao alterar a senha
Multi-Tenancy
- Tenant raiz (admin do sistema) + tenants de clientes
- Usuários pertencem a tenants por meio de associações
- Papéis: owner, admin, user com permissões hierárquicas
- Convites de equipe com notificações por e-mail
- Transferência de propriedade entre membros
- Log de atividade por tenant
- Autoatendimento de configurações do tenant
Cobrança e Créditos (Stripe)
- Planos de assinatura com cobrança mensal e anual (percentual de desconto anual configurável)
- Modelos de preço: taxa fixa ou por assento (com assentos incluídos, limites mín/máx de assentos)
- Testes gratuitos com dias de teste configuráveis por plano e prevenção de abuso de teste
- Pacotes de créditos para compras únicas
- Dois buckets de créditos: créditos de assinatura (reset ou acumulados) + créditos comprados
- Stripe Checkout (baseado em redirecionamento) para coleta de pagamentos
- Stripe Billing Portal para autoatendimento do cliente (métodos de pagamento, faturas)
- Suporte a múltiplas moedas com moeda padrão configurável
- Stripe Tax com cálculo automático de impostos
- Códigos promocionais e cupons — crie e gerencie pela interface de admin, vinculados ao Stripe
- Geração de faturas — numeração sequencial, download em PDF, detalhamento de impostos
- Histórico de transações — por tenant e geral do admin com busca e filtros
- Métricas financeiras — séries temporais de receita, ARR, DAU, MAU com gráficos
- Middleware de aplicação de cobrança — bloqueia assinaturas expiradas de recursos pagos
- Middleware de direitos — controle recursos com base no plano (direitos booleanos e numéricos)
- Isenção de cobrança para contas especiais (tenant raiz, contas de demonstração)
- Gerenciamento de assinaturas pelo admin — cancele, modifique, reassine planos
- Tratamento de reembolsos e disputas — handlers de webhook para
charge.refunded,charge.dispute.created,charge.dispute.closed
Branding White-Label
- Nome do aplicativo, slogan e logotipo personalizados (texto, imagem ou ambos os modos)
- Cores do tema (primária, destaque, fundo, superfície, texto) com paletas de tons geradas automaticamente
- Fontes personalizadas (corpo e título)
- Landing page personalizada com HTML configurável
- Páginas personalizadas servidas em
/p/{slug}com metadados de SEO - Injeção de CSS personalizado
- Injeção de HTML no head (analytics, meta tags)
- Upload de favicon
- Biblioteca de mídia para gerenciamento de imagens/ativos
- Barra lateral de navegação configurável com itens controlados por direitos
- Personalização da página de autenticação (títulos e subtítulos de login/cadastro)
- Personalização do HTML do dashboard
- Suporte a imagem Open Graph
Chaves de API
- Crie chaves de API com prefixo
lsk_ - Dois níveis de autoridade: admin (resolve automaticamente o tenant raiz) e user (requer X-Tenant-ID)
- Armazenamento com hash SHA-256 — a chave bruta é mostrada apenas na criação
- Rastreamento do timestamp do último uso
- Interface de admin para gerenciamento de chaves
- Suporta autenticação por JWT e chave de API em todos os endpoints
Webhooks de Saída
- 19 tipos de eventos em 5 categorias:
- Cobrança: subscription.activated, subscription.canceled, payment.received, payment.failed
- Ciclo de vida da equipe: member.invited, member.joined, member.removed, member.role_changed, ownership.transferred
- Ciclo de vida do usuário: user.registered, user.verified, user.deactivated
- Créditos e cobrança: credits.purchased, plan.changed, tenant.created, tenant.deactivated
- Auditoria e segurança: user.deleted, tenant.deleted, api_key.created, api_key.revoked
- Assinatura de payload HMAC-SHA256 com segredos prefixados por
whsec_ - Rastreamento de entrega com códigos de resposta, corpos de resposta e duração
- Entrega de eventos de teste
- Regeneração de segredos
- Filtragem por tipo de evento por webhook
Interface Administrativa
- Painel com contagens de usuários/tenants, visão geral de saúde e métricas de negócio
- Gerenciamento de usuários — listar, pesquisar, visualizar perfis, editar, suspender, personificar, excluir com verificação prévia de propriedade
- Gerenciamento de tenants — listar, visualizar, editar, atribuição de planos, controle de status, gerenciamento de assinaturas
- Visão financeira — histórico de transações de todos os tenants, gráficos de receita/ARR/DAU/MAU
- Análise de produto — funil de conversão, KPIs de SaaS, coortes de retenção, métricas de engajamento, explorador de eventos personalizados
- Gerenciamento de planos — criar, editar, arquivar, direitos, configuração por assento, dias de teste
- Gerenciamento de pacotes de crédito — criar, editar, ordenar, ativar/desativar
- Promoções — criar e gerenciar códigos de promoção e cupons do Stripe
- Editor de marca — cores de tema, logotipos, fontes, página de destino, páginas personalizadas, CSS, navegação
- Gerenciamento de chaves de API — criar, visualizar, revogar
- Gerenciamento de webhooks — criar, editar, excluir, testar, visualizar histórico de entregas
- Anúncios — publicar anúncios para todo o sistema
- Visualizador de logs do sistema com filtro por severidade, pesquisa e filtro por usuário
- Editor de variáveis de configuração (strings, números, enums, modelos)
- Mensagens no aplicativo — enviar mensagens para usuários individuais
- Membros raiz — gerenciar a equipe administrativa com convites e mudanças de função
- Exportação CSV para usuários e tenants
- Personificação administrativa — entrar como qualquer usuário para depuração
- Monitoramento de saúde do sistema (veja abaixo)
- Verificações de saúde de integrações — status de MongoDB, Stripe, Resend, Google OAuth
- Acesso administrativo em três níveis: usuário (somente leitura), administrador (leitura e escrita), proprietário (operações destrutivas)
Monitoramento de Saúde do Sistema
- Registro automático de nós com heartbeat (intervalo de 30s)
- Coleta de métricas a cada 60s: CPU, memória, disco, rede, estatísticas de requisições HTTP, estatísticas do MongoDB, runtime Go
- Middleware de métricas HTTP com rastreamento de latência percentil (p50/p95/p99)
- Alertas baseados em limites (níveis de aviso/crítico configuráveis)
- Retenção automática de dados por 30 dias via índices TTL do MongoDB
- Painel em tempo real com 8 gráficos de séries temporais (Recharts)
- Modos de filtro agregado, sobreposição de todos os nós e nó único
- Seleção de intervalo de tempo: 1h, 6h, 24h, 7d, 30d
- Painel de saúde de integrações (conectividade MongoDB, Stripe, Resend, Google OAuth)
Análise de Produto e Telemetria
- Funil de conversão — Visitantes → Inscrições → Visualizações de Página do Plano → Checkouts → Conversões Pagas → Upgrades, com taxas de conversão em cada etapa
- KPIs de SaaS — MRR, ARR, ARPU, LTV, taxa de churn, taxa de conversão de teste para pago, tempo mediano até a primeira compra, contagem de assinantes ativos
- Coortes de retenção — tabela de retenção de coortes semanal ou mensal com mapa de calor codificado por cores (rastreia
lastLoginAtao longo do tempo) - Métricas de engajamento — DAU/WAU/MAU para assinantes pagantes, sessões médias por usuário, principais recursos por uso, tendência de consumo de créditos
- Explorador de eventos personalizados — navegar por todos os tipos de eventos, visualizar gráficos de tendência, filtrar por nome e intervalo de tempo
- SDK Go de telemetria —
telemetry.Track()/TrackBatch()/TrackPageView()/TrackCheckoutStarted()/TrackLogin()para gravação direta de eventos em processo (sem sobrecarga HTTP) - API REST de telemetria —
POST /telemetry/track(anônima, com limite de taxa) para visualizações de página;POST /telemetry/eventse/telemetry/events/batch(autenticadas) para eventos personalizados - Auto-instrumentação — registro, verificação de e-mail, login, checkout, ativação/cancelamento de assinatura e mudanças de plano são rastreados automaticamente
- Retenção de 365 dias — eventos de telemetria expiram automaticamente via índice TTL do MongoDB
- Limite de taxa — 60 req/min por IP para rastreamento anônimo, 120 req/min por usuário para eventos autenticados
Autoatendimento do Usuário
- Edição de perfil (nome de exibição, e-mail)
- Preferência de tema (claro/escuro)
- Gerenciamento de senha
- Configuração e gerenciamento de MFA
- Visualizador de sessões com revogação remota
- Exclusão de conta com limpeza de dados
- Exportação de dados (compatível com GDPR)
- Gerenciamento de cobrança (seleção de plano, compras de crédito, histórico de faturas, download de PDF)
- Fluxo de integração
Documentação de API Integrada
- Referência de API HTML interativa em
/api/docscom detalhes expansíveis de endpoints - Referência de API em Markdown em
/api/docs/markdownpara integração em documentações externas - Referência abrangente de eventos de webhook com descrições de payload
- Versionada automaticamente a partir do arquivo VERSION
Administração via CLI
lastsaas setup— Inicializar o sistema (criar tenant raiz + proprietário)lastsaas start/stop/restart— Gerenciamento de processos do servidorlastsaas change-password— Redefinir a senha de qualquer usuáriolastsaas send-message— Enviar mensagens do sistema para usuárioslastsaas transfer-root-owner— Transferir propriedade do tenant raizlastsaas config list|get|set— Gerenciar variáveis de configuraçãolastsaas version— Mostrar versões do binário e do banco de dadoslastsaas status— Verificar saúde do sistemalastsaas mcp— Iniciar o servidor MCP (veja Servidor MCP abaixo)
Servidor MCP (Acesso Administrativo por IA)
Um servidor Model Context Protocol integrado dá a assistentes de IA como Claude acesso somente leitura aos seus dados administrativos — painéis, usuários, tenants, dados financeiros, logs, saúde e muito mais. Útil para fazer perguntas como "qual é a nossa tendência de ARR?" ou "mostre logs críticos da última hora" em linguagem natural.
- 32 ferramentas somente leitura em 14 categorias — sem operações de escrita, seguro por design
- 2 recursos —
lastsaas://dashboardelastsaas://healthpara contexto automático - Autenticação por chave de API — requer uma chave de API do tenant raiz, mesma autenticação da API administrativa
- Transporte Stdio — executa localmente, compatível com Claude Desktop e Claude Code
Categorias de ferramentas:
- Sobre — versão do software e ambiente
- Painel — contagens de usuários/tenants, visão geral de saúde
- Tenants — listar com filtros, visualização detalhada com membros
- Usuários — listar com pesquisa, visualização detalhada com métodos de autenticação e associações
- Financeiro — histórico de transações, métricas de séries temporais de receita/ARR/DAU/MAU
- Logs — pesquisa de texto completo com filtros de severidade/categoria/data, contagens por severidade
- Saúde — métricas atuais do sistema, dados de saúde em séries temporais, lista de nós, status de integrações
- Configuração — listar e inspecionar variáveis de configuração em tempo de execução
- Planos — detalhes de planos, chaves de direitos, pacotes de crédito
- Anúncios — listar anúncios publicados e rascunhos
- Promoções — códigos de promoção do Stripe com detalhes de cupons
- Segurança — inventário de chaves de API (apenas visualizações), membros do tenant raiz
- Webhooks — configurações de webhook, referência de tipos de eventos, histórico de entregas
Segurança
- Cabeçalhos de segurança (CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy)
- Limite de taxa em endpoints de autenticação
- Limites de tamanho do corpo de requisições
- Proteção contra injeção NoSQL (escape de entrada de regex)
- Proteção XSS via DOMPurify para HTML injetado
- Resolução de IP de proxy confiável (Fly-Client-IP)
- Verificação de assinatura de webhooks (Stripe de entrada, HMAC-SHA256 de saída)
- Processamento de webhooks idempotente via índice único de ID de evento
- Detecção de injeção em logs do sistema com alertas críticos automáticos
- Rotação de tokens de atualização com revogação baseada em família
Pronto para Produção
- Build Dockerizado em múltiplas etapas (Go + Node + Alpine)
- Implantação Fly.io com máquinas de auto-parada/auto-início
- Serviço de SPA a partir do binário Go (sem necessidade de servidor web separado)
- CORS, cabeçalhos de segurança, limite de taxa
- Desligamento gracioso com drenagem de conexões
- Versionamento automático com migração de banco de dados na inicialização
- Mensagens de notificação de versão para usuários administradores após atualizações
Pilha Tecnológica
| Camada | Tecnologia |
|---|---|
| Backend | Go 1.25, gorilla/mux |
| Frontend | React 19, TypeScript, Vite 7, Tailwind CSS 4 |
| Banco de dados | MongoDB (Atlas ou local) |
| Autenticação | JWT (acesso + atualização), bcrypt, Google/GitHub/Microsoft OAuth, Magic Links, TOTP MFA |
| Cobrança | Stripe (stripe-go v82) — Checkout, Portal de Cobrança, Webhooks, Impostos |
| Resend | |
| Gráficos | Recharts |
| Métricas | gopsutil v4 |
| gofpdf (geração de faturas) | |
| Segurança | DOMPurify (frontend), HMAC-SHA256 (webhooks) |
| Implantação | Docker, Fly.io |
Pré-requisitos
- Go 1.25+ — instalar
- Node.js 22+ — instalar
- MongoDB — uma das opções:
- MongoDB Atlas (o nível gratuito M0 funciona bem)
- MongoDB Community Edition local
- Git
Opcionais
- Chave de API do Resend — para verificação de e-mail, redefinição de senha e convites
- Credenciais do Google OAuth — para login com Google
- Credenciais do GitHub OAuth — para login com GitHub
- Credenciais do Microsoft OAuth — para login com Microsoft
- Conta Stripe — para cobrança (assinaturas, compras de crédito, faturas)
- Conta Fly.io — para implantação em produção
Início Rápido
1. Clonar o repositório
git clone https://github.com/jonradoff/lastsaas.git
cd lastsaas
2. Executar o script de configuração
./scripts/setup.sh
Isso solicitará:
- Nome do banco de dados — a identidade do projeto (dois projetos que compartilham um nome compartilham a mesma base de usuários)
- URI do MongoDB — sua string de conexão do Atlas ou
mongodb://localhost:27017 - Segredos JWT — gerados automaticamente
- Credenciais do Google OAuth — opcionais, pressione Enter para pular
- Chave de API do Resend — opcional, pressione Enter para pular
- Nome do aplicativo e configurações de e-mail
Ele grava um arquivo .env e copia o modelo de configuração.
3. Iniciar o backend
set -a && source .env && set +a
cd backend
go run ./cmd/server
O servidor inicia em http://localhost:4290.
4. Iniciar o frontend
Em um terminal separado:
set -a && source .env && set +a
cd frontend
npm install
npm run dev
O frontend inicia em http://localhost:4280.
5. Inicializar o sistema
Execute a configuração via CLI para criar o tenant raiz e a conta de administrador:
cd backend
go run ./cmd/lastsaas setup
Isso cria o tenant raiz (sua organização administrativa) e a conta de proprietário. Agora você pode entrar em http://localhost:4280.
Configurando Cobrança com Stripe
A integração com Stripe é opcional, mas necessária para assinaturas pagas, compras de pacotes de crédito e geração de faturas. Se você pular esta seção, o LastSaaS funciona como uma plataforma somente de nível gratuito.
1. Criar uma conta Stripe
Cadastre-se em stripe.com e complete a integração. Você pode usar o modo de teste durante o desenvolvimento.
2. Obter suas chaves de API
Vá para Painel Stripe → Desenvolvedores → Chaves de API e copie:
- Chave publicável (começa com
pk_test_oupk_live_) - Chave secreta (começa com
sk_test_ousk_live_)
3. Criar um endpoint de webhook
Vá para Painel Stripe → Desenvolvedores → Webhooks → Adicionar endpoint:
- URL do endpoint:
https://your-domain.com/api/billing/webhook- Para desenvolvimento local com a CLI do Stripe:
stripe listen --forward-to localhost:4290/api/billing/webhook
- Para desenvolvimento local com a CLI do Stripe:
- Eventos para assinar — selecione estes 8 eventos:
checkout.session.completedinvoice.paidinvoice.payment_failedcustomer.subscription.updatedcustomer.subscription.deletedcharge.refundedcharge.dispute.createdcharge.dispute.closed
Após criar o endpoint, copie o segredo de assinatura (começa com whsec_).
4. Definir variáveis de ambiente
Adicione estas ao seu arquivo .env:
STRIPE_SECRET_KEY=sk_test_...
STRIPE_PUBLISHABLE_KEY=pk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
5. Criar planos na interface administrativa
Uma vez que o backend esteja em execução com o Stripe configurado:
- Faça login como proprietário do tenant raiz
- Vá para Admin → Planos e crie seus planos de assinatura
- Defina preços, intervalos de cobrança, dias de teste, permissões e alocações de créditos
- Opcionalmente, crie pacotes de créditos em Admin → Pacotes de Créditos
- Opcionalmente, crie códigos de promoção em Admin → Promoções
Os Produtos e Preços do Stripe são criados automaticamente quando os clientes finalizam a compra — você não precisa configurar nada no Painel do Stripe além das chaves de API e do webhook.
6. Ir para produção
Quando estiver pronto para produção:
- Alterne para o modo de produção no Painel do Stripe
- Crie um novo endpoint de webhook com sua URL de produção e os mesmos 8 eventos
- Atualize suas variáveis de ambiente de produção com as chaves de produção e o segredo do webhook
Configuração
Os arquivos de configuração ficam em backend/config/:
dev.example.yaml/prod.example.yaml— modelos commitadosdev.yaml/prod.yaml— suas configurações reais (ignorados pelo git)
Defina LASTSAAS_ENV=dev ou LASTSAAS_ENV=prod para selecionar qual configuração carregar. O padrão é dev.
Os segredos são referenciados como ${ENV_VAR} no YAML e expandidos a partir de variáveis de ambiente no momento do carregamento. Os valores padrão usam a sintaxe ${VAR:default}.
Variáveis de Ambiente
| Variável | Obrigatória | Descrição |
|---|---|---|
DATABASE_NAME | Sim | Identidade do projeto — nome compartilhado = base de usuários compartilhada |
MONGODB_URI | Sim | String de conexão do MongoDB |
JWT_ACCESS_SECRET | Sim | Segredo para assinar tokens de acesso |
JWT_REFRESH_SECRET | Sim | Segredo para assinar tokens de atualização |
FRONTEND_URL | Sim | URL do frontend para CORS e links de e-mail |
APP_NAME | Sim | Nome do seu aplicativo (usado em e-mails, interface) |
STRIPE_SECRET_KEY | Não | Chave secreta da API do Stripe |
STRIPE_PUBLISHABLE_KEY | Não | Chave publicável do Stripe (enviada ao frontend) |
STRIPE_WEBHOOK_SECRET | Não | Segredo de assinatura do webhook do Stripe |
GOOGLE_CLIENT_ID | Não | ID do cliente OAuth do Google |
GOOGLE_CLIENT_SECRET | Não | Segredo do OAuth do Google |
GOOGLE_REDIRECT_URL | Não | URL de redirecionamento do OAuth do Google |
RESEND_API_KEY | Não | Chave da API do serviço de e-mail Resend |
FROM_EMAIL | Não | Endereço de e-mail do remetente (padrão: noreply@yourdomain.com) |
FROM_NAME | Não | Nome do remetente (padrão: LastSaaS) |
Estrutura do Projeto
lastsaas/
backend/
cmd/
server/main.go Entry point (HTTP server, route wiring)
lastsaas/main.go CLI administration tool + MCP server
config/ YAML config files
internal/
api/handlers/ HTTP handlers (auth, admin, tenant, billing, branding, webhooks, etc.)
apicounter/ API call counters for integration health
auth/ JWT, password hashing, Google/GitHub/Microsoft OAuth, TOTP MFA
config/ Config loader with env variable expansion
configstore/ Runtime configuration (DB-backed, cached)
db/ MongoDB connection, collections, indexes
email/ Resend email service with templates
events/ Internal event emitter (drives webhook deliveries)
health/ System health monitoring service
middleware/ Auth, tenant, RBAC, rate limiting, metrics, security, billing enforcement
models/ All data models
planstore/ Plan seeding
stripe/ Stripe service (Checkout, Billing Portal, Customers, Prices, Subscriptions)
syslog/ System logging service with injection detection
telemetry/ Telemetry event collection, Go SDK, and PM analytics queries
version/ Version management and auto-migration
frontend/
src/
api/client.ts Axios API client with token refresh
components/ Layout, AdminLayout, BrandingThemeInjector, shared components
contexts/ Auth, Tenant, and Branding React contexts
pages/
admin/ Admin interface (dashboard, users, tenants, plans, billing, branding, etc.)
admin/health/ Health monitoring components and charts
app/ Customer-facing pages (dashboard, billing, team, settings, activity)
app/settings/ User settings tabs (profile, security, MFA, sessions, billing)
auth/ Login, signup, MFA challenge, magic link, verification, password reset
public/ Landing page and custom pages
types/index.ts TypeScript type definitions
scripts/
setup.sh Interactive setup script
Dockerfile Multi-stage production build
fly.toml Fly.io deployment config
VERSION Current version number
Documentação da API
O LastSaaS inclui documentação de API integrada e auto-hospedada:
- Referência HTML interativa:
GET /api/docs— cartões de endpoint expansíveis com exemplos de requisição/resposta - Referência em Markdown:
GET /api/docs/markdown— para incorporação em documentação externa
A documentação é gerada a partir do código e sempre corresponde à versão em execução. Ela cobre todos os endpoints, parâmetros, formatos de requisição/resposta e todos os 19 tipos de eventos de webhook com descrições de payload.
Configuração do Servidor MCP
O servidor MCP permite que assistentes de IA consultem seus dados administrativos em linguagem natural. Ele encaminha requisições somente leitura para a API administrativa do LastSaaS usando uma chave de API.
Pré-requisitos
- Uma instância do LastSaaS em execução (local ou implantada)
- Uma chave de API do tenant raiz — crie uma em Admin → Chaves de API com autoridade admin
Uso com Claude Desktop
Adicione à sua configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json no macOS):
{
"mcpServers": {
"lastsaas": {
"command": "/path/to/lastsaas",
"args": ["mcp"],
"env": {
"LASTSAAS_URL": "https://your-app.fly.dev",
"LASTSAAS_API_KEY": "lsk_your_api_key_here"
}
}
}
}
Uso com Claude Code
Adicione ao .mcp.json do seu projeto:
{
"mcpServers": {
"lastsaas": {
"command": "/path/to/lastsaas",
"args": ["mcp"],
"env": {
"LASTSAAS_URL": "https://your-app.fly.dev",
"LASTSAAS_API_KEY": "lsk_your_api_key_here"
}
}
}
}
Compilar o binário CLI
cd backend
go build -o lastsaas ./cmd/lastsaas
Variáveis de Ambiente
| Variável | Obrigatória | Descrição |
|---|---|---|
LASTSAAS_URL | Sim | URL base da instância do LastSaaS (ex.: http://localhost:4290 ou https://your-app.fly.dev) |
LASTSAAS_API_KEY | Sim | Chave de API do tenant raiz com autoridade admin (começa com lsk_) |
Ferramentas Disponíveis (26)
| Ferramenta | Descrição |
|---|---|
get_about | Versão do software e ambiente |
dashboard_stats | Contagens de usuários/tenants e visão geral de saúde |
list_tenants | Lista paginada de tenants com busca e filtros |
get_tenant | Tenant detalhado com plano, cobrança e membros |
list_users | Lista paginada de usuários com busca e filtros |
get_user | Usuário detalhado com métodos de autenticação e associações |
list_transactions | Transações financeiras com busca e filtros |
get_financial_metrics | Séries temporais de receita, ARR, DAU, MAU |
search_logs | Busca de logs em texto completo com filtros de severidade/categoria/data |
get_log_severity_counts | Contagens de logs por nível de severidade |
get_system_health | Estatísticas atuais de CPU, memória, disco e HTTP |
get_health_metrics | Dados de saúde em série temporal (por nó ou agregados) |
list_nodes | Nós do servidor com status e versão |
get_integrations | Saúde das integrações de terceiros |
list_config | Todas as variáveis de configuração em tempo de execução |
get_config | Detalhes de uma única variável de configuração |
list_plans | Planos de assinatura com preços e permissões |
get_plan | Informações detalhadas do plano |
list_entitlement_keys | Catálogo de chaves de permissões |
list_credit_bundles | Preços dos pacotes de créditos |
list_announcements | Anúncios publicados e rascunhos |
list_promotions | Códigos de promoção e cupons do Stripe |
list_api_keys | Inventário de chaves de API (apenas pré-visualizações) |
list_root_members | Equipe administrativa e convites pendentes |
list_webhooks | Configurações de webhooks de saída |
list_webhook_event_types | Tipos de eventos de webhook disponíveis |
get_webhook | Detalhes do webhook com histórico de entregas |
Exemplos de MCP
Estes exemplos mostram como as ferramentas MCP funcionam na prática. Cada exemplo lista o prompt do usuário e as chamadas exatas de ferramentas que são executadas nos bastidores.
Exemplo 1: Verificar Visão Geral do Negócio
Prompt: "Como está meu SaaS hoje?"
Chamadas de ferramentas:
dashboard_stats— retorna um instantâneo:Users: 1,284 (12 new today) Tenants: 89 (3 new this week) Health: All systems healthy Active alerts: 0
Exemplo 2: Investigar Tendência de Receita
Prompt: "Mostre nossa tendência de receita dos últimos 30 dias"
Chamadas de ferramentas:
get_financial_metrics— consulta dados de série temporal:
Retorna pontos de dados diários de receita (valores em centavos) para gráficos, ex.:{ "range": "30d", "metric": "revenue" }2026-01-27: $1,250.00 2026-01-28: $890.00 ... 2026-02-25: $2,100.00get_financial_metrics— acompanhe com o ARR:{ "range": "30d", "metric": "arr" }
Exemplo 3: Encontrar um Tenant Específico
Prompt: "Consulte o tenant Acme Corp e mostre os detalhes"
Chamadas de ferramentas:
list_tenants— busca por nome:
Retorna tenants correspondentes com IDs, nomes de planos e status de cobrança.{ "search": "Acme Corp" }get_tenant— busca os detalhes completos usando o ID do tenant:
Retorna informações do plano, status de cobrança, saldos de créditos, datas de assinatura e uma lista completa de membros com funções.{ "id": "6789abc..." }
Exemplo 4: Buscar Erros Críticos
Prompt: "Houve algum erro crítico na última hora?"
Chamadas de ferramentas:
search_logs— filtra por severidade e tempo:
Retorna entradas de log com carimbos de data/hora, categorias, mensagens e metadados. Por exemplo:{ "severity": "critical", "fromDate": "2026-02-26T14:00:00Z", "perPage": "50" }[critical] 14:23:05 billing — Stripe webhook signature verification failed [critical] 14:31:12 security — Log injection pattern detected in user inputget_log_severity_counts— fornece a distribuição geral:critical: 2, high: 15, medium: 89, low: 342, debug: 1,204
Exemplo 5: Monitorar Saúde do Sistema
Prompt: "Como está a saúde do sistema? Todas as integrações estão funcionando?"
Chamadas de ferramentas:
get_system_health— retorna métricas atuais:CPU: 12.3% Memory: 245 MB / 512 MB (47.8%) Disk: 1.2 GB / 8 GB (15.0%) HTTP: 1,234 requests (p95 latency: 45ms) MongoDB: 12 active connectionsget_integrations— verifica a conectividade de terceiros:MongoDB: healthy (3ms response) Stripe: healthy (120ms response, 89 calls/24h) Resend: healthy (95ms response, 12 calls/24h) Google OAuth: healthy
Exemplo 6: Auditar Uso de Chaves de API
Prompt: "Mostre todas as chaves de API ativas e quando foram usadas pela última vez"
Chamadas de ferramentas:
list_api_keys— retorna o inventário (chaves completas nunca são expostas):"Production Automation" (admin) — lsk_...a3f2 — last used: 2 hours ago "CI/CD Pipeline" (admin) — lsk_...b7e1 — last used: 15 minutes ago "Customer Integration" (user) — lsk_...c9d4 — last used: 3 days ago "Old Test Key" (admin) — lsk_...d1e5 — last used: never
Exemplo 7: Revisar Planos de Assinatura
Prompt: "Quais planos oferecemos e quantos assinantes cada um tem?"
Chamadas de ferramentas:
list_plans— retorna todos os planos com preços e contagens de assinantes:Starter: $9/mo ($86/yr) — 45 subscribers — 5 seat limit Pro: $29/mo ($278/yr) — 31 subscribers — 25 seat limit, per-seat pricing Enterprise: $99/mo ($950/yr) — 8 subscribers — unlimited seatslist_credit_bundles— mostra as compras de créditos disponíveis:Small Pack: 100 credits — $5.00 — active Medium Pack: 500 credits — $20.00 — active Large Pack: 2000 credits — $60.00 — active
Exemplo 8: Verificar Entrega de Webhooks
Prompt: "Nossos webhooks estão entregando com sucesso? Mostre o histórico recente do webhook de produção"
Chamadas de ferramentas:
list_webhooks— mostra todos os webhooks configurados:"Production" — https://api.example.com/webhooks — 12 events — active "Staging" — https://staging.example.com/hooks — 5 events — activeget_webhook— busca o histórico de entregas do webhook de produção:
Retorna tentativas recentes de entrega com códigos de status, tempos de resposta e quaisquer falhas:{ "id": "abc123..." }2026-02-26 14:30:01 — subscription.activated — 200 OK (120ms) 2026-02-26 14:15:22 — payment.received — 200 OK (95ms) 2026-02-26 13:45:10 — member.joined — 500 Error (340ms)
Exemplo 9: Consulta de Usuário e Associações
Prompt: "Encontre o usuário com o e-mail alice@example.com e mostre as associações de tenant dele"
Chamadas de ferramentas:
list_users— busca por e-mail:
Retorna o usuário correspondente com ID, status de verificação e último login.{ "search": "alice@example.com" }get_user— busca os detalhes completos:
Retorna:{ "id": "def456..." }Email: alice@example.com (verified) Auth: password + Google OAuth MFA: TOTP enabled Memberships: — Acme Corp (owner) — joined 2026-01-15 — Side Project Inc (admin) — joined 2026-02-10 Last login: 2 hours ago
Exemplo 10: Análise Aprofundada de Métricas de Saúde
Prompt: "Mostre as tendências de CPU e memória em todos os nós das últimas 24 horas"
Chamadas de ferramentas:
list_nodes— identifica todos os nós do servidor:node-1 (v1.0.0) — healthy — last seen: 30s ago node-2 (v1.0.0) — healthy — last seen: 28s agoget_health_metrics— busca dados agregados de série temporal:
Retorna pontos de dados a cada 60 segundos com % de CPU, % de memória, % de disco, contagens de requisições HTTP e percentis de latência — prontos para gráficos.{ "range": "24h" }get_health_metrics— opcionalmente, aprofunde em um nó específico:{ "node": "node-1", "range": "24h" }
Implantação
Fly.io
O LastSaaS inclui um Dockerfile e configuração do Fly.io para implantação em produção.
# Install flyctl if needed
curl -L https://fly.io/install.sh | sh
# Create the app (first time only)
flyctl apps create your-app-name --org your-org
# Set production secrets
flyctl secrets set \
DATABASE_NAME="your-db-name" \
MONGODB_URI="mongodb+srv://..." \
JWT_ACCESS_SECRET="$(openssl rand -hex 32)" \
JWT_REFRESH_SECRET="$(openssl rand -hex 32)" \
FRONTEND_URL="https://your-app-name.fly.dev" \
APP_NAME="YourApp" \
STRIPE_SECRET_KEY="sk_live_..." \
STRIPE_PUBLISHABLE_KEY="pk_live_..." \
STRIPE_WEBHOOK_SECRET="whsec_..."
# Deploy
flyctl deploy
O Dockerfile compila tanto o backend Go quanto o frontend React em um único contêiner Alpine de ~14MB. O binário Go serve o SPA do frontend diretamente — sem necessidade de nginx ou servidor web separado.
Outras Plataformas
A imagem Docker funciona em qualquer lugar onde contêineres sejam executados. A única dependência externa é o MongoDB. Defina as variáveis de ambiente listadas acima e exponha a porta 8080.
Faça um Fork e Continue Construindo com IA
O LastSaaS foi construído inteiramente por meio de conversa com Claude Code — cada recurso, cada handler, cada componente foi descrito em linguagem natural e implementado por um agente de IA. Mas o ponto principal não é que ele foi construído dessa forma — é que ele foi projetado para continuar sendo construído dessa forma.
O código-fonte segue padrões consistentes, usa nomenclatura clara e mantém uma estrutura que os agentes de IA navegam com fluência. Faça um fork, aponte o Claude Code para ele e comece a descrever seu produto. O agente já entende os padrões — autenticação, multi-tenancy, cobrança, middleware, eventos — e constrói em cima deles naturalmente. Você não está começando do zero; você está continuando uma conversa.
Aqui está o que já está preparado para você:
- Adicione os modelos de dados do seu produto em
backend/internal/models/ - Adicione handlers de API em
backend/internal/api/handlers/ - Conecte as rotas em
backend/cmd/server/main.go - Adicione páginas de frontend em
frontend/src/pages/ - Use o contexto do tenant — cada requisição autenticada carrega o tenant do usuário, então sua lógica de produto ganha multi-tenancy gratuitamente
- Use o sistema de créditos — verifique e deduza créditos para recursos baseados em uso
- Use as permissões — controle recursos com
middleware.RequireEntitlement(db, "feature_name")emiddleware.RequireActiveBilling() - Use o armazenamento de configuração — adicione configurações ajustáveis em tempo de execução sem reimplantação
- Use o emissor de eventos — emita eventos a partir dos seus handlers e eles serão entregues automaticamente aos webhooks configurados
- Use chaves de API — seus endpoints suportam automaticamente autenticação por JWT e por chave de API
- Use o sistema de branding — sua interface herda o tema white-label automaticamente por meio do BrandingContext
- Use o sistema de telemetria — rastreie eventos personalizados com
telemetry.Track()em Go ouPOST /telemetry/eventsde clientes externos, e eles aparecerão automaticamente no painel do PM
Política de Privacidade
O LastSaaS é um software auto-hospedado — você controla seu banco de dados, sua hospedagem e seus dados. O servidor MCP se conecta à sua instância do LastSaaS por meio da API HTTP usando ferramentas somente leitura — nenhum dado é transmitido à Metavert LLC ou a terceiros.
Para a política de privacidade completa, consulte: https://www.metavert.io/lastsaas-privacy-policy
Licença
MIT - Copyright 2026 Metavert LLC