Construindo este site com ajuda do Claude Code

6 min de leitura
django ia claude-code desenvolvimento python javascript docker ci-cd deploy markdown blog chatgpt tutorial compartilhamento

Decidi ser 100% transparente sobre como este site foi criado, desde a primeira linha de código até o deploy automatizado que roda agora. E a verdade é: o Claude Code foi fundamental em cada etapa.

Como começar: Instalando o Claude Code

Antes de mergulhar no desenvolvimento, vou explicar como você pode replicar esse processo.

Instalação do Claude Code

O Claude Code é uma CLI oficial da Anthropic que funciona diretamente no terminal. Para instalar:

# Via npm (recomendado)
npm install -g @anthropic-ai/claude-code

# Ou via pip
pip install claude-code

Configuração inicial:

# Configurar API key
claude-code auth

# Verificar instalação
claude-code --version

Documentação completa

Toda a documentação oficial está em: https://docs.anthropic.com/en/docs/claude-code

Seções mais úteis:
- Overview: Introdução e conceitos
- CLI Usage: Comandos e flags principais
- Memory: Sistema de memória do Claude.md
- Settings: Configurações e personalização
- Tutorials: Workflows comuns e exemplos práticos

Workflow híbrido: ChatGPT + Claude Code

Uma estratégia poderosa que uso é combinar ChatGPT e Claude Code:

1. ChatGPT para brainstorming e prompts:

ChatGPT: "Preciso criar um sistema de blog em Django. 
Me ajude a estruturar um prompt detalhado para o Claude Code 
com todos os requisitos técnicos."

2. Claude Code para implementação:
Pego o prompt refinado do ChatGPT e uso no Claude Code para:
- Gerar código Django limpo
- Implementar funcionalidades específicas
- Resolver problemas técnicos em tempo real

Exemplo de prompt gerado no ChatGPT:

"Crie um sistema de blog Django com: (1) Model BlogPost com slug automático, tags e SEO, (2) Views com paginação, (3) Templates responsivos com TailwindCSS, (4) Admin configurado, (5) Template tags para Markdown. Use boas práticas Django e estrutura modular."

Vantagens dessa abordagem:
- ChatGPT excelente para planejamento e estruturação de ideias
- Claude Code superior para implementação e código de qualidade
- Prompts mais detalhados e estruturados

O início: Arquitetura profissional

Minha primeira decisão foi usar Django com uma estrutura profissional desde o início. Queria algo escalável, não apenas um template estático. O Claude me ajudou a definir uma arquitetura modular e bem organizada:

# Estrutura inicial do projeto
portfolio/
├── config/                 # Configurações centralizadas
│   ├── settings/
│   │   ├── base.py        # Settings comuns
│   │   ├── dev.py         # Desenvolvimento
│   │   └── prod.py        # Produção
│   ├── urls.py            # URLs principais
│   └── wsgi.py            # WSGI para deploy
└── apps/                   # Apps modulares
    ├── core/              # Funcionalidades básicas
    ├── blog/              # Sistema de blog
    ├── calculator/        # Calculadora CLT vs PJ
    └── users/             # Usuários (futuro)

Definindo a identidade autêntica

O momento mais interessante foi quando percebi que não queria um "portfólio" tradicional. Usei este prompt com o Claude:

"Não quero usar a palavra 'portfólio' em lugar nenhum. Meu objetivo é mostrar o que faço, minhas habilidades e o que desenvolvo, mas de maneira mais autêntica, direta e profissional."

Resultado: Transformamos de "Bem-vindo ao meu Portfólio" para "Desenvolvedor de Soluções Web" e criamos a identidade lpcoutinho.dev no header. Muito mais profissional e autêntico.

A calculadora CLT vs PJ: Do conceito ao deploy

Este foi o projeto mais complexo e revelador. A inspiração veio da excelente calculadora da Nagringa, que tem design impecável e funcionalidades bem pensadas.

Funcionalidades implementadas:

  • Cálculos precisos baseados na legislação brasileira (INSS, IRRF, FGTS)
  • Interface em tempo real com JavaScript para UX fluida
  • Sincronização inteligente entre formulários CLT e PJ
  • Sistema de URL compartilhável para salvar e compartilhar cálculos
  • Local storage para histórico de comparações
  • Tooltips explicativos para cada campo
  • Design responsivo com TailwindCSS

Desafios técnicos enfrentados:

1. Sincronização de salários: Inicialmente copiava a cada caractere digitado (1, 10, 100, 1000...).
Solução: Implementar eventos focus/blur para sincronizar apenas no primeiro preenchimento.

2. Precisão financeira: Usar Decimal em vez de float para evitar erros de arredondamento.

3. UX em tempo real: Debounce no JavaScript para calcular automaticamente sem sobregerar o servidor.

4. Renderização Markdown: Inicialmente o blog não renderizava ## e ` corretamente.
Solução: Template tags customizados com biblioteca markdown.

O Build Log: Sistema completo de blog

Criar esta seção (que chamei de "Build Log" em vez de blog) foi uma jornada própria:

Backend Django:

  • Model BlogPost com slug automático, tags, SEO e timestamps
  • Views com paginação e filtros
  • Admin configurado para criação fácil de conteúdo
  • Template tags para renderização de Markdown

Frontend moderno:

  • Templates responsivos com TailwindCSS
  • Syntax highlighting para blocos de código
  • Cards clicáveis - toda a prévia é um link para o post
  • Typography otimizada para leitura técnica
# Exemplo do model BlogPost
class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(unique=True, blank=True)
    content = models.TextField()  # Markdown
    excerpt = models.TextField(max_length=300)
    tags = models.CharField(max_length=200)
    published = models.BooleanField(default=True)

    def reading_time(self):
        return max(1, round(len(self.content.split()) / 250))

Deploy automatizado: Do código à produção

A parte mais empolgante foi criar um workflow de CI/CD completo. Aqui está o que construímos:

1. Containerização com Docker

FROM python:3.12.3-slim
# Configuração otimizada para produção
# WhiteNoise para arquivos estáticos
# Gunicorn como WSGI server
# Health checks integrados

2. GitHub Actions para deploy automático

name: Deploy to Production
on:
  push:
    branches: [main]

# Deploy via SSH para VPS
# Build da imagem Docker
# Update do Docker Swarm
# Cleanup de imagens antigas

3. Docker Swarm com Traefik

  • SSL automático via Let's Encrypt
  • Load balancing e proxy reverso
  • Health checks e restart automático
  • Volumes persistentes para dados

4. Problemas de produção resolvidos

Erro de permissões no container:

mkdir: cannot create directory '/app/data': Permission denied

Solução: Ajustar Dockerfile para criar diretórios antes da troca de usuário.

Problemas de volumes:
Inicialmente o volume mount sobrescrevia o código da imagem.
Solução: Volumes separados para dados, static, media e logs.

Tecnologias e ferramentas

Backend:

  • Django 5.2.2 com apps modulares
  • SQLite para simplicidade (migração para PostgreSQL planejada)
  • WhiteNoise para servir arquivos estáticos
  • Gunicorn como WSGI server

Frontend:

  • TailwindCSS para design system consistente
  • JavaScript vanilla para interatividade
  • Markdown com syntax highlighting

DevOps:

  • Docker para containerização
  • GitHub Actions para CI/CD
  • Docker Swarm para orquestração
  • Traefik para proxy reverso e SSL

Processo de desenvolvimento colaborativo

O que mais me impressionou foi a colaboração iterativa com o Claude. Não é "deixar a IA fazer tudo" - é ter um parceiro técnico experiente.

Exemplos de colaboração:

Eu: "A sincronização está copiando caractere por caractere"
Claude: Identificou o problema e sugeriu focus/blur events

Eu: "Campos devem começar vazios, não com zero"
Claude: Modificou inicialização para aplicar apenas defaults específicos

Eu: "Erro de banco no Portainer: Permission denied"
Claude: Analisou logs e corrigiu permissões do Docker

Este próprio post

Este post que você está lendo agora é um exemplo perfeito do processo. Começou simples, mas evoluí para incluir:

  • ✅ Todo o processo técnico até agora
  • ✅ Desafios reais e soluções implementadas
  • ✅ Código examples e configurações
  • ✅ Preview cards completamente clicáveis
  • ✅ Workflow de CI/CD documentado

Meta-momento: Estou usando o Claude para escrever sobre como uso o Claude! 🤯

Aprendizados fundamentais

1. IA como pair programming

O Claude funciona como um tech lead experiente que:
- Conhece boas práticas de arquitetura
- Identifica problemas rapidamente
- Sugere soluções baseadas em padrões consolidados
- Explica o "porquê" das decisões técnicas

2. Velocidade vs. qualidade

Mito: IA gera código ruim rapidamente
Realidade: IA gera código limpo que segue padrões, acelerando desenvolvimento

3. Foco no que importa

Em vez de passar horas pesquisando "como implementar X", posso focar em:
- Arquitetura e decisões de design
- Lógica de negócio específica
- Experiência do usuário
- Resolução de problemas reais

Próximos passos documentados

Técnico:

  • [ ] Migração para PostgreSQL
  • [ ] Sistema de cache com Redis
  • [ ] Monitoramento com Prometheus
  • [ ] Backup automatizado
  • [ ] Dark mode toggle

Funcionalidades:

  • [ ] Mais calculadoras/ferramentas
  • [ ] Seção de automações N8N
  • [ ] Sistema de comentários
  • [ ] Analytics de performance
  • [ ] API REST para integrações

Conclusão transparente

Usar IA no desenvolvimento não é substituir o desenvolvedor. É ter um multiplicador de força que:

  • ✅ Acelera implementação sem comprometer qualidade
  • ✅ Sugere melhores práticas que eu posso não conhecer
  • ✅ Identifica problemas antes que se tornem bugs
  • ✅ Documenta código e decisões automaticamente

O resultado: Código limpo, funcional, que eu entendo completamente e posso manter/evoluir.

Este site rodando em produção é a prova de que essa abordagem funciona. Do desenvolvimento local ao deploy automatizado, tudo construído com transparência total.


Este build log continuará documentando cada evolução do projeto. Código fonte será disponibilizado em breve no GitHub - continue acompanhando para ver os próximos experimentos! 🚀

Compartilhar este post

Entre em Contato

Vamos conversar sobre sua próxima solução? Entre em contato comigo através dos canais abaixo.

Disponível para projetos freelance e oportunidades de desenvolvimento