Voltar ao blog

Construindo um SaaS do zero, parte 5: colocando no ar sem quebrar no primeiro dia

Quinta parte da série: domínio e DNS, variáveis de ambiente, configuração de produção do Supabase, checklist de segurança e o que monitorar nas primeiras 48 horas.

C
Caio Braga
30 de agosto de 2026 · 6 min de leitura
Sumário do artigo
Construindo um SaaS do zero, parte 5: colocando no ar sem quebrar no primeiro dia

O app funciona no ambiente de desenvolvimento, a cobrança está ligada e o acesso por plano funciona. Falta a etapa em que quase todo projeto perde um fim de semana: colocar no ar com domínio próprio, sem chave exposta e sem quebrar autenticação.

Esta quinta parte da série Construindo um SaaS do zero cobre a configuração de produção e o checklist que evita os erros que só aparecem depois que o app sai do localhost.

Domínio e DNS

Registre o domínio, depois aponte para onde o app está hospedado. Dois tipos de registro resolvem quase tudo:

Registro Para quê Exemplo
A Domínio raiz apontando para um IP lowcode-ai.com.br para 76.76.21.21
CNAME Subdomínio apontando para outro nome www para cname.plataforma.com

Três coisas que costumam travar essa etapa:

Propagação leva tempo. Mudança de DNS pode demorar horas para valer em toda parte. Testar de outra rede ou pelo celular na rede móvel ajuda a distinguir propagação incompleta de configuração errada.

Escolha uma versão canônica. Ou www ou raiz, com a outra redirecionando. Servir as duas sem redirecionamento divide sinal de SEO e gera sessão perdida no login.

Certificado leva alguns minutos depois do DNS resolver. Erro de certificado logo após apontar o domínio quase sempre é impaciência.

Variáveis de ambiente

Aqui mora o erro mais caro dessa etapa. Existem dois tipos de chave e eles nunca se misturam.

Chave Onde pode aparecer Papel
URL do projeto Front, público Endereço da API
Chave anônima (anon) Front, público Acesso limitado pelas policies de RLS
Chave de serviço (service role) Só no servidor Ignora RLS por completo

Variável com prefixo público, como VITE_ ou PUBLIC_, entra no pacote enviado ao navegador. Qualquer pessoa lê. Colocar a chave de serviço numa variável com esse prefixo entrega o banco inteiro.

A chave de serviço só existe dentro de edge function ou backend. Se ela vazou em algum momento, gere uma nova no painel e troque em todos os lugares. Chave vazada não se conserta removendo do código, porque ela continua no histórico do repositório.

Configuração de produção do Supabase

Quatro ajustes que não existem em desenvolvimento e que quebram o app no dia do lançamento:

Site URL e Redirect URLs. Precisam apontar para o domínio real. Enquanto estiverem em localhost, o link de confirmação de e-mail e o retorno do login social mandam o usuário para lugar nenhum.

SMTP próprio. O envio padrão serve para teste e tem limite baixo. Sem SMTP configurado, recuperação de senha simplesmente para de funcionar quando o volume sobe.

RLS em toda tabela com dado de usuário. Confira tabela por tabela. Tabela criada no meio do caminho por uma iteração da IA costuma ser a que ficou sem proteção.

Buckets de storage. O padrão privado é o correto para arquivo de usuário. Bucket público significa que qualquer pessoa com a URL acessa o arquivo, sem login.

Checklist antes de abrir

Item Como verificar
RLS ligada em todas as tabelas Painel de tabelas, coluna de RLS
Policies testadas com duas contas Login em dois navegadores, tentar ler dado alheio
Chave de serviço fora do front Buscar pelo nome da variável no código publicado
Site URL e redirects em produção Configurações de autenticação
Fluxo de cadastro completo Criar conta nova do zero, confirmar e-mail, logar
Recuperação de senha Testar com e-mail real
Checkout e webhook Assinar com cartão de teste e conferir a tabela de assinaturas
Página de erro amigável Acessar uma rota que não existe
Sitemap e robots Abrir as duas URLs no domínio final

O quinto item merece atenção especial. Criar conta nova é o caminho que você menos percorre depois da primeira semana de desenvolvimento, e é o primeiro que todo usuário faz.

Erros que só aparecem em produção

CORS. Requisição que funcionava local passa a ser bloqueada porque a origem mudou. A correção é liberar o domínio novo na configuração da função, não desligar a checagem.

Redirect de login social. O provedor precisa conhecer a URL de callback com o domínio de produção. Cada provedor tem sua própria lista, e o Supabase tem a dele.

Fuso horário. Servidor em UTC, usuário no Brasil. Data que aparece um dia atrasada geralmente é conversão faltando na hora de exibir. Grave sempre em timestamptz e converta na apresentação.

Cold start. Função sem uso demora mais na primeira chamada. Se o primeiro clique do usuário depende dela, mostre estado de carregamento em vez de deixar a tela parada.

Cache de build. Alteração publicada que não aparece costuma ser cache do navegador ou da CDN. Teste em aba anônima antes de suspeitar do deploy.

Observabilidade mínima

Não precisa de painel sofisticado no primeiro dia. Precisa de três coisas:

Log de erro do lado do servidor, com o log das edge functions acessível e lido de verdade nas primeiras semanas.

Captura de erro no front, para saber quando a tela quebrou para o usuário sem ele reportar.

Um alerta por e-mail para falha de webhook de pagamento. Cobrança que falha em silêncio é receita perdida sem aviso.

Plano de rollback

Antes de publicar, saiba como voltar. No Lovable isso é o histórico de versões do projeto. Em migração de banco, é o script reverso escrito antes de aplicar a mudança.

Publicar sexta à noite sem plano de rollback é a receita clássica de fim de semana perdido. Publique em dia e horário em que você consegue acompanhar.

As primeiras 48 horas

O que observar, em ordem de importância:

Cadastros iniciados contra cadastros concluídos. Diferença grande aponta problema no e-mail de confirmação.

Erros nos logs, agrupados por mensagem. Um erro repetido cem vezes vale mais atenção que cem erros diferentes.

Primeira ação relevante depois do cadastro. Usuário que cria conta e não faz nada indica que a tela inicial não deixou claro o próximo passo.

Fatura de infraestrutura no segundo dia. Pico inesperado aparece rápido e é mais fácil de corrigir na primeira semana.

O que vem depois

Com o produto no ar, a série entra na fase que decide se ele sobrevive: os primeiros usuários, o que medir e o que mudar com base no que eles fazem. A parte 6 trata disso.

Se você chegou até aqui com as cinco partes, tem ideia validada, banco modelado, interface funcionando, cobrança ligada e produto publicado. O que falta agora não é código.

Tags
#saas#deploy#supabase#dns#produção#jornada saas
● Não perca essa chance

Não perca a próxima edição.

Toda quinta, 9h. Direto na sua caixa.

  • Ferramentas que economizam horas do seu trabalho
  • Agentes e automações que funcionam
  • Bastidores do que estamos construindo

100% gratuito. Cancele quando quiser.

Compartilhar