Como construir uma landing page com Claude Code, Supabase e Vercel

É basicamente assim que a gente monta páginas de inscrição como a da nossa Live de Product Engineering: quatro passos, do design system básico até o ar. Sem precisar saber programar de verdade — o Claude Code escreve o código, você guia as decisões.

Formato: Guia Stack: Claude Code · Supabase · Vercel Nível: Sem experiência prévia

Requisitos

O que precisa estar pronto antes de começar.

Claude Code instalado

O CLI que roda no seu terminal e edita os arquivos do projeto direto no seu computador.

Uma conta gratuita no Supabase

É onde os dados de quem preencher o formulário da sua página vão ficar guardados.

Uma conta gratuita na Vercel + um repositório no GitHub

É pra onde a página vai depois de pronta, com um endereço público de verdade.

Passo 1 — Monte um design system básico com Claude Code

Antes de desenhar qualquer tela, defina a identidade visual em um lugar só.

Esse é o passo que a maioria pula — e é o que evita que cada página nova saia com uma cor, uma fonte ou um espaçamento diferente. Peça pro Claude Code criar um arquivo único, tipo design-system.html, com as suas cores, fontes e componentes básicos em variáveis CSS. Esse arquivo vira a referência que você cola no início de toda conversa nova sobre uma página do site.

prompt-design-system.txt
Quero montar um design system básico pro site da minha marca antes de criar
qualquer página. Crie um único arquivo HTML (design-system.html) que sirva de
referência visual, com:

1. Paleta de cores (fundo, texto, destaque, bordas) como variáveis CSS em :root
2. Um par de fontes: uma de destaque para títulos (mais impactante) e uma pra
   texto corrido (legível), carregadas via Google Fonts
3. Escala de espaçamento (ex.: 8, 16, 24, 32, 48, 64px)
4. Estilo de botão primário e secundário
5. Um exemplo de card e de formulário usando essas mesmas variáveis

Contexto da marca: <descreva em 2-3 frases o tom da marca — sério, divertido,
premium, técnico etc. — e se já existe um logo ou cor principal>

Revise o resultado como quem revisa uma identidade visual, não código: as cores combinam com a marca? O título grande tem presença? Dá pra ler o texto corrido sem cansar? Ajuste ali mesmo antes de seguir — corrigir o design system agora é muito mais barato do que corrigir cinco páginas depois.

Passo 2 — Crie o layout da página

Com os tokens prontos, a estrutura da página é a parte rápida.

Agora sim, peça a página em si. Dê pro Claude Code o arquivo do passo 1 como contexto e descreva a estrutura em blocos — nav, hero, formulário, seção de detalhes, rodapé — em vez de descrever pixel por pixel. Se tiver uma página existente cuja organização você gosta, cole o link como referência de estrutura (nunca peça pra copiar o conteúdo de outra marca).

prompt-layout.txt
Usando as variáveis de cor, fonte e espaçamento definidas em design-system.html,
crie a página <nome-da-pagina>.html com esta estrutura:

1. Nav fixa no topo, com logo e um botão de CTA
2. Hero com título grande, um parágrafo curto e um formulário de inscrição
   (campos: nome e email) ao lado — duas colunas no desktop, empilhado no
   celular, formulário aparece antes do resto do conteúdo no mobile
3. Seção com 3-4 blocos de detalhe (ex.: data, formato, para quem é)
4. Rodapé simples com link de volta pra home

Depois de enviado o formulário, troque o card do formulário por uma mensagem
de confirmação (não recarregue a página).

Referência de estrutura, não de conteúdo: <cole aqui o link de uma página que
você gosta, se tiver>

Nesse ponto a página já existe, mas o formulário ainda não guarda nada em lugar nenhum — é só HTML. É isso que o próximo passo resolve.

Passo 3 — Armazene os dados com Supabase

Conecte o formulário a um banco de verdade, com as permissões certas.

No painel do Supabase, crie um projeto e rode este SQL no SQL Editor pra criar a tabela que vai guardar as inscrições:

criar-tabela.sql
create table public.inscricoes (
  id uuid primary key default gen_random_uuid(),
  nome text not null,
  email text not null,
  created_at timestamptz not null default now()
);

-- Row Level Security ligado: por padrão, ninguém lê nem escreve nada.
alter table public.inscricoes enable row level security;

-- Só abre a porta que precisa: qualquer visitante pode INSERIR uma inscrição,
-- mas ninguém de fora consegue LER a lista de inscritos pela chave pública.
create policy "Qualquer pessoa pode se inscrever"
  on public.inscricoes for insert
  to anon
  with check (true);

Por que a política de RLS importa: a chave que você vai usar no HTML da página (a publishable key, em Project Settings → API Keys) fica visível pra qualquer um que abrir o "ver código-fonte" do navegador. Isso é esperado — mas só é seguro porque o Row Level Security acima permite inserir e não permite ler. Sem essa política, o email de todo mundo que se inscreveu ficaria público.

Com a tabela pronta, pegue a Project URL e a publishable key em Project Settings → API Keys, e ligue o formulário do passo 2 a elas:

conectar-supabase.html
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2"></script>
<script>
  const SUPABASE_URL = 'https://SEU-PROJETO.supabase.co';
  const SUPABASE_KEY = 'sb_publishable_...'; // a chave publicável, nunca a service_role
  const db = window.supabase.createClient(SUPABASE_URL, SUPABASE_KEY);

  document.getElementById('signup-form').addEventListener('submit', async (e) => {
    e.preventDefault();
    const nome = e.target.nome.value;
    const email = e.target.email.value;

    const { error } = await db.from('inscricoes').insert({ nome, email });

    if (error) {
      console.error(error);
      return;
    }

    // aqui entra a troca pra tela de confirmação do passo 2
  });
</script>

Peça pro Claude Code fazer essa ligação por você, apontando os dois arquivos: "conecta o formulário de <nome-da-pagina>.html nessa tabela do Supabase, usando a publishable key do projeto, e mostra a mensagem de confirmação só depois que o insert der certo".

Pacote com 22 skills para o Claude
Guia · Claude e Claude Code

22 skills pra instalar no Claude

Enquanto o Claude Code escreve sua página, dá pra ir além com skills prontas de Design, Build, Research e Marketing — cada uma com o link oficial e o passo a passo de instalação.

R$ 660 R$29,90
Ver o guia →

Passo 4 — Publique com Vercel

Como é um site estático, o deploy é a parte mais rápida de tudo.

  1. Suba a pasta do projeto pra um repositório no GitHub (privado ou público).
  2. Crie uma conta gratuita na Vercel e clique em Add New Project.
  3. Selecione o repositório e importe.
  4. Como é HTML puro, sem build de verdade, um vercel.json simples na raiz do projeto resolve tudo — inclusive as URLs limpas (sem .html no final):
vercel.json
{
  "buildCommand": "echo 'Static site'",
  "outputDirectory": ".",
  "cleanUrls": true
}
  1. Clique em Deploy. Em menos de um minuto a página está no ar num endereço .vercel.app.
  2. (Opcional) Aponte um domínio próprio em Settings → Domains.

Pronto — daqui pra frente, toda vez que você der git push numa alteração, a Vercel publica a nova versão sozinha.

Notas operacionais

Quer ver isso funcionando de verdade?

A Live de Product Engineering foi construída exatamente com esses quatro passos. E se quiser aprender a fazer isso com o seu time, é disso que tratam nossos workshops.

Conheça nossos Workshops →