Pular para o conteúdo

Builder OS

Builder · OS
L03 · Domínio real
~11 MIN DE LEITURA

Lição 3 de 9: Domínio real

lição 3/9 do Módulo 4
AO FIM, VOCÊ VAI TER
  • Decisão registrada em docs/decisions.md: domínio próprio (qual) ou *.vercel.app permanente (por quê)
  • Se domínio próprio: domínio registrado + DNS apontando + Vercel configurado + SSL ativo
  • Atualização do check 6 do npm run doctor (placeholder vira check real)
  • Commit chore(domain): custom domain configured ou docs: stay on vercel.app — reason X

Esta lição é uma decisão (comprar ou não) mais configuração no painel de duas plataformas. Nenhum passo escreve código.

A pergunta: sim ou não?

*.vercel.app é uma URL real, pública, com SSL. Funciona pra mostrar pra amigo, pra colocar no Twitter, pra usar pessoalmente. Pra cobrar dinheiro de estranho, ou pra um auditor da Receita acessar, quase sempre tem que ser domínio próprio.

Esta lição responde primeiro sim ou não. Se for sim, conta com R$ 50/ano e 30 minutos de DNS. Se for não, *.vercel.app continua bom pro estágio. Pra produto interno, ferramenta pessoal, ou MVP que talvez morra em 2 semanas, o subdomínio do Vercel dá conta.

Independente da resposta, você vai:

  1. Decidir com critério explícito (4 perguntas no Passo 1)
  2. Registrar a decisão em docs/decisions.md com a razão escrita
  3. Atualizar check 6 do npm run doctor (placeholder vira check real)

Se a resposta for sim, ainda: comprar domínio, configurar DNS pro Vercel, confirmar SSL ativo.

Passo 1 — Decida sim ou não

Antes de comprar nada, decide. Cole no Claude:

prompt · text
Vou decidir se compro domínio próprio ou fico em `*.vercel.app` pra esse produto. Responde sim ou não pra cada uma:

1. O produto vai cobrar dinheiro de estranhos (não de você ou amigos próximos)?
2. O produto vai aparecer em material formal (NF, contrato, email pra cliente B2B)?
3. O produto vai aparecer em SEO/orgânico (Google vai indexar com a URL)?
4. Você prevê manter esse produto rodando por 6+ meses?

Se 2+ "sim": domínio próprio.
Se 0-1 "sim": `*.vercel.app` é OK pro estágio atual.

Não responde pra mim — eu vou responder pra mim mesmo. Esse prompt é só guia.

Esta lição assume que você decidiu sim. Se decidiu não, pula pro Passo 5 (registrar decisão) e segue pra L04. Você pode comprar domínio depois sem retrabalho: só repete esta lição quando for hora.

Passo 2 — Escolha e registre o domínio

Para domínios .com.br, Registro.br é o único canal oficial e o mais barato (~R$ 40/ano). Para domínios .com / .ai / .app / outros TLDs, Cloudflare Registrar é o padrão da indústria (preço de custo, sem markup, ~US$ 10/ano).

prompt · text
Não rode nada — só me dá orientação. Quero registrar o domínio "<seu-dominio>". Pergunta:

1. É .com.br ou .com (ou outro)? Tem cobrança de CPF/CNPJ pelo registrar?
2. Lista os 3 passos do fluxo de registro (sem comprar — só passos descritivos)
3. O que eu vou precisar configurar depois (DNS, etc.) — descreve em 3 linhas

Leia, escolhe o registrar e compra manualmente. Você precisa do CPF/CNPJ e do cartão. Pra .com.br, você paga e aguarda a confirmação por email (a Receita Federal vincula). Pra .com, é instantâneo.

Passo 3 — Configure DNS apontando pro Vercel

O Vercel te diz exatamente quais records adicionar. No dashboard do Vercel, vai em Settings → Domains → Add Domain e cola seuproduto.com.br (ou .com). O Vercel responde com 2 opções:

  1. (recomendado pra subdomínios tipo app.seuproduto.com.br)
  2. (necessário pra root domain como seuproduto.com.br, com IPs do Vercel)

Configura no painel do registrar (Registro.br ou Cloudflare). Depois cola no Claude pra confirmar:

prompt · text
Configurei DNS no <registrar>. Roda `dig seuproduto.com.br` (e/ou `dig www.seuproduto.com.br`) e me mostra a resposta. Quero confirmar que está apontando pra IP do Vercel.

Se aponta pro Vercel, ótimo. Se ainda aponta pro padrão do registrar, é a propagação: aguarda 5-30 minutos e tenta de novo.

Passo 4 — Confirme SSL ativo

O Vercel emite SSL automaticamente via Let's Encrypt. Quando o DNS aponta certo, o cadeado aparece em 1-2 minutos. Abre https://seuproduto.com.br no browser:

  1. Cadeado verde / sem aviso de "Not secure"
  2. Mesma página da fatia 1 que estava em *.vercel.app
  3. Submeter o formulário ainda funciona

Se o cadeado mostra aviso, espera 5 minutos e tenta de novo (o Let's Encrypt às vezes demora). Se passar de 10 minutos com erro, no dashboard do Vercel tem um botão Refresh certificate: clica.

Passo 5 — Registre a decisão e atualize o doctor

Independente de "sim" ou "não", registra a decisão num arquivo de docs. Decisão sem registro vira pergunta repetida 3 meses depois.

prompt · text
Cria ou atualiza `docs/decisions.md` adicionando:

# Decisões do produto

## Domínio
- **Escolha**: <domínio próprio: seuproduto.com.br | `*.vercel.app` permanente>
- **Data**: <data>
- **Por quê**: &lt;1-2 frases descrevendo a razão da decisão>
- **Quando revisitar**: <evento que vai gatilhar revisão, ex: "quando primeiro cliente pagante chegar" ou "quando fizer rebrand">

Mostre o diff antes de aplicar.

E atualiza o npm run doctor pra fazer o check 6 real (no lugar do placeholder da L02):

prompt · text
Atualiza o check 6 do `bin/doctor.mjs` (criado na L02). Substitui o placeholder por:

- Lê `docs/decisions.md` procurando pelo bloco "Domínio"
- Se a decisão é "vercel.app permanente": retorna OK + a razão registrada
- Se a decisão é "domínio próprio: <x>": faz `dig <x>` e checa se aponta pra Vercel; OK se sim, FAIL se não
- Se não encontra a decisão registrada: FAIL com mensagem "configure docs/decisions.md → Domínio"

Mostre o diff antes de aplicar.

Aprove. Roda npm run doctor: agora os 6 checks são todos reais.

Passo 6 — Faça o commit

prompt · text
Faça commit das mudanças. Mensagem: `chore(domain): custom domain configured` se for domínio próprio, ou `docs: stay on vercel.app — reason X` se for ficar no padrão. Mostra os comandos antes.

Aprove. Confira no GitHub.

Build Diary — o CEAP escolheu .escoladados.com e documentou o trade-off

O CEAP roda em ceap.escoladados.com, subdomínio do domínio principal do projeto editorial. O DEPLOYMENT_PLAN.md registra o passo 1 da decisão como item explícito:

Deployment Steps

1. Register Domain

Go to Cloudflare Dashboard / https://dash.cloudflare.com/domains

Register: escoladados.com (~$10.44/year)

Note o (~$10.44/year). O autor registrou o custo concreto na decisão, pra um leitor futuro entender que a escolha não foi "porque sim", foi feita com o preço sob o olho. E em outro lugar do mesmo doc, o ADR-007 registra a razão de não usar Vercel:

Bandwidth: Unlimited (Cloudflare) vs 100 GB (Vercel)

Brazil CDN: 2+ cities (Cloudflare) vs 1 city (Vercel)

A decisão está documentada com critério mensurável (bandwidth, CDN), em vez de uma preferência genérica. Você pode ter escolhido Vercel com domínio .com.br e está OK. O que importa é o porquê estar escrito em algum lugar pra próxima decisão fazer referência.

Takeaways

  • Domínio próprio depende do estágio do produto. 4 perguntas decidem (cobrar de estranho, material formal, SEO, vida útil 6+ meses).
  • .com.br no Registro.br (R$ 40/ano, CPF obrigatório); .com no Cloudflare Registrar (~US$ 10/ano, preço de custo).
  • DNS via CNAME (subdomínio) ou A record (root domain). Propagação geralmente <1h. SSL automático via Let's Encrypt.
  • Decisão registrada em docs/decisions.md com data + razão + quando revisitar. Sem isso, vira pergunta repetida 3 meses depois.

Você terminou quando

Três coisas:

  1. Decisão registrada em docs/decisions.md com data, razão, e gatilho de revisão
  2. Se domínio próprio: domínio rodando com SSL e fatia 1 funcional na URL nova
  3. npm run doctor retorna 6 OKs (sem placeholder)