Lance um site 95+ PageSpeed em menos de 24h com o Claude Code
Reflexão Pessoal

Lance um site 95+ PageSpeed em menos de 24h com o Claude Code

7 de novembro de 2025 12 min

🎯 Pontos-Chave

  • PageSpeed 95-98/100 usando um setup enxuto com Vite + React
  • Railway + Cloudflare entregam hospedagem veloz por apenas US$10/mês
  • Code splitting e lazy loading reduzem o LCP de 2,8s para 1,1s
  • Bundle inicial de apenas 93 KB (vs 250 KB com Next.js)
  • Claude Code vira multiplicador: 23h de trabalho em vez de vários dias

O Desafio

Como muitos marketers, tenho uma lista enorme de side-projects meio começados, nunca terminados.

E como muitos, enfrento a mesma frustração:

tenho ideias, mas não sou desenvolvedor. Então paro no mockup.

Ou pior: vou para Webflow, Framer ou WordPress… e perco o controle.

É lento. É pesado. E nunca está realmente pronto para produção.

Desta vez, quis testar algo diferente.

Um desafio pessoal: criar um site real, rápido, limpo, sem plugins mágicos e sem ajuda de desenvolvedor. Em menos de 24 horas.

Com Claude Code como único copiloto.

Estabelecer um Framework Claro

Não queria ir em todas as direções como de costume.

Então antes mesmo de abrir um editor, tirei tempo para escrever o que queria.

Não um stack. Não uma tecnologia da moda.

Apenas necessidades funcionais concretas:

- Um site simples com algumas páginas estáticas + um blog

- Renderização limpa e responsiva

- Um score PageSpeed acima de 90 no mobile

- SEO técnico limpo: meta, JSON-LD, sitemap, robots.txt

- Um backend leve (sem CMS)

- Hosting fácil de deployar, a baixo custo

- E acima de tudo: um projeto que eu entenda de A a Z

Esse enquadramento me impediu de ir pelo caminho errado. Também é o que permitiu que Claude fosse super relevante em suas respostas.

Claude Code, o Parceiro Que Desbloqueio

Cheguei com um prompt claro:

``

Crie-me uma app React + TypeScript com Vite, Express no backend,

routing simples, páginas estáticas, gestão de conteúdo em markdown,

base PostgreSQL, Tailwind CSS para estilo, e hosting no Railway.

`

Em alguns segundos, eu tinha:

- todos os arquivos bem organizados

- uma base backend funcional

- um frontend responsivo estilizado com Tailwind

- os scripts de deployment prontos

E acima de tudo: zero fricção. Onde eu costumava passar horas configurando o ambiente, Claude me impulsionou para a criação real do projeto desde os primeiros minutos.

Um Stack Escolhido pela Necessidade

Não "escolhi um stack". Parti das minhas restrições.

Claude propôs a melhor combinação técnica para respondê-las.

Aqui está o que mantivemos:

- Frontend: React 18, Vite, Tailwind CSS, Wouter, MDX

- Backend: Express.js com PostgreSQL, Drizzle ORM

- Infraestrutura: Railway para fullstack, Cloudflare para velocidade e cache

- Analytics: Umami (leve, sem cookies, GDPR friendly)

Sem extras. Sem framework superdimensionado.

Apenas o necessário.

O Que Claude Realmente Trouxe

Não é "apenas IA que codifica".

Claude:

- preparou componentes UI (cards, modals, botões) com acessibilidade

- gerou o banco de dados, modelos, CRUDs

- configurou o SEO (helmet, sitemap, JSON-LD, robots.txt)

- otimizou o LCP (hero image em WebP, preload, lazy loading)

- limpou os imports, reduziu o JS inicial, evitou rerenders desnecessários

E tudo isso enquanto eu continuava iterando no conteúdo, UX ou animações.

Como Alcançar 95+ PageSpeed?

1. Code Splitting Agressivo

Antes (bundle monolítico):

`javascript

// Tudo carregado de uma vez = 450KB JavaScript

`

Depois (lazy loading):

`javascript

// Carregamento sob demanda = 85KB inicial

const Home = lazy(() => import('./pages/Home'));

const About = lazy(() => import('./pages/About'));

`

Impacto: LCP reduzido de 2.8s para 1.1s.

2. Imagens Otimizadas

`jsx

src="/hero.webp"

loading="lazy"

decoding="async"

width="800"

height="600"

/>

`

Todas as imagens convertidas para WebP (economia de 60% vs PNG/JPEG).

3. CSS Purgado com Tailwind

`javascript

// tailwind.config.js

export default {

content: ['./client/*/.{ts,tsx}'],

// Resultado: 8KB CSS vs 3.5MB em dev

}

`

Antes: 450KB de CSS

Depois: 8KB de CSS (94% de redução)

4. Sem Scripts de Terceiros Bloqueantes

Umami Analytics:

- Nunca bloqueia o rendering

- Pesa 2KB (vs 45KB do Google Analytics)

- Sem cookies = sem banner GDPR

Railway + Cloudflare: O Combo Vencedor

Por Que Railway?

`bash

# Deployment em 2 minutos cronometrados

$ git push origin main

# Railway detecta automaticamente tudo

`

O que amo no Railway:

- ✅ Deployment Git automático (push to deploy)

- ✅ PostgreSQL incluído

- ✅ Logs em tempo real super limpos

- ✅ Escalonamento horizontal automático

- ✅ $5/mês para começar

Cloudflare: A Camada de Velocidade

Railway hospeda o app, mas Cloudflare cacheia tudo:

1. Setup DNS: Apontar o domínio para Railway via Cloudflare

2. Page Rules: Cache everything para os assets

3. Auto Minify: HTML, CSS, JS automaticamente minificados

4. Brotli Compression: Ativado por padrão

5. HTTP/3: Latência reduzida em 30%

Resultado: 180ms TTFB da França.

`

Sem Cloudflare: 850ms TTFB

Com Cloudflare: 180ms TTFB (-78%)

`

E os Resultados?

Performance

- PageSpeed Desktop: 98/100

- PageSpeed Mobile: 95/100

- LCP: 1.1s (✅ Good < 2.5s)

- INP: 45ms (✅ Good < 200ms)

- CLS: 0.02 (✅ Good < 0.1)

- FCP: 0.8s (✅ Good < 1.8s)

- TTFB: 180ms (✅ Good < 600ms)

Tamanho do Bundle

- JS gzipped: 85KB

- CSS purgado: 8KB

- Build time: 12s

Custo Mensal

- Railway + domínio + Cloudflare: ~$10/mês

Para comparação:

- Next.js starter: ~250KB

- Gatsby starter: ~180KB

- Meu site: 93KB carga inicial

O Que Mais Gostei

A sensação de controle.

Sem dívida técnica.

Sem plugins que quebram.

Sem dependência de um stack obscuro.

Tudo é modificável. Tudo é compreensível.

E posso continuar iterando sozinho.

A capacidade de enviar screenshots e modificar rapidamente.

O multi-terminal é super eficiente (tinha 3 abertos em paralelo) para trabalhar simultaneamente em diferentes partes do projeto.

As Limitações

- Claude Code usa rapidamente seus créditos (tive que passar para a API paga para não ficar bloqueado)

- Você precisa estruturar seus prompts com precisão. Caso contrário, as respostas podem ser vagas ou inúteis.

O Que Aprendi

1. Menos JavaScript = Mais Performance

Resisti à tentação de adicionar:

- ❌ Framer Motion (animações pesadas)

- ❌ Moment.js (98KB para datas!)

- ❌ Lodash inteiro

Alternativas leves:

- ✅ Animações CSS nativas

- ✅ date-fns (2KB) ao invés de Moment

- ✅ Vanilla JS para utilities

2. Railway > Vercel para Full-Stack

| Feature | Railway | Vercel |

|---------|---------|--------|

| PostgreSQL incluído | ✅ | ❌ |

| WebSockets | ✅ | ❌ |

| Preço /mês | $5 | $20+ |

| Deploy time | 2min | 1min |

3. Cloudflare é Gratuito e Poderoso

Funcionalidades gratuitas:

- CDN global ilimitado

- Proteção DDoS

- SSL auto

- Analytics básico

- Cache API responses

ROI: $0/mês por performance equivalente a um CDN de $50/mês.

4. Claude Code = Multiplicador de Força

O que me teria levado 3-4 dias sozinho, feito em 23h com Claude Code.

O segredo: ser preciso nos prompts.

❌ Prompt ruim: "Crie um botão"

✅ Bom prompt: "Crie um componente Button com TypeScript, variants (primary, secondary, ghost), sizes (sm, md, lg), loading state, disabled state, e acessibilidade completa (ARIA)"

Stack Técnico Completo

`json

{

"frontend": {

"framework": "React 18",

"bundler": "Vite 5",

"language": "TypeScript",

"styling": "Tailwind CSS 4",

"routing": "Wouter (1.6KB)",

"content": "MDX"

},

"backend": {

"runtime": "Node.js 22",

"framework": "Express.js",

"database": "PostgreSQL",

"orm": "Drizzle ORM"

},

"infrastructure": {

"hosting": "Railway",

"cdn": "Cloudflare",

"analytics": "Umami"

}

}

``

Conclusão

Sou marketer. E mesmo assim, em menos de 24 horas, criei um site limpo, performante, deployado, pronto para produção.

E o que senti não foi apenas orgulho.

É uma forma de liberação criativa.

Se você também quer sair do ciclo mockup → dependência dev → fricção → abandono:

teste Claude Code.

Mas comece com uma necessidade real.

Ele cuida do resto.

Perguntas ou comentários? Não hesite em me contatar no LinkedIn ou X!