Lucas Cavalheri .
← Voltar para projetos
Side Projects / Caso de Estudo

Portfolio Ruby on Rails

Portfólio profissional full-stack construído com Ruby on Rails 8, servindo como vitrine técnica e canal de captação de oportunidades. A aplicação reúne projetos, stack tecnológica, trajetória profissional, depoimentos e formulário de contato — tudo gerenciável por um painel administrativo autenticado, sem depender de CMS externo para o conteúdo principal. A interface usa Hotwire (Turbo + Stimulus) e Tailwind CSS 4 para entregar uma experiência fluida e responsiva, com HTML renderizado no servidor. O site está em produção na AWS EC2, com deploy automatizado via Kamal e pipeline CI/CD no GitHub Actions.

Portfolio Ruby on Rails

O Desafio de Engenharia

Construir um portfólio que fosse ao mesmo tempo uma peça de marketing pessoal e uma demonstração prática de engenharia: performance, SEO, segurança e operação em produção com custo controlado. Os requisitos incluíam: área pública otimizada para indexação (meta tags, Open Graph, JSON-LD, sitemap); painel admin para CRUD de projetos, tecnologias, experiências e depoimentos; cache inteligente nas páginas públicas com invalidação ao salvar no admin; formulário de contato com proteção anti-spam; deploy reproduzível em container Docker; e pipeline que só publica em produção após testes, lint e auditorias de segurança passarem. Tudo isso sem over-engineering — stack enxuta, convenções Rails e infraestrutura que eu mesmo opero na EC2.

A Solução Arquitetural

Backend: Rails 8.1 monolito com PostgreSQL 17, autenticação por sessão (has_secure_password), models com validações e concerns para cache e reordenação (position). Frontend: Hotwire + Importmap (sem bundler JS pesado), Tailwind CSS 4 via tailwindcss-rails, partials reutilizáveis e assets pré-compilados no build Docker. Cache: PublicPageCache com TTL de 3 minutos e versionamento — simula ISR: páginas públicas cacheadas no servidor e invalidadas automaticamente quando o admin altera conteúdo. Admin: namespace /admin com dashboard, CRUD completo, reordenação de projetos/tecnologias e gestão de mensagens de contato. Infra & Deploy: Dockerfile multi-stage (Ruby 4.0.4-slim, jemalloc, Thruster + Puma) Kamal com proxy SSL, host rails.lucascavalheri.com.br, imagem no GHCR PostgreSQL 17 como accessory Kamal na mesma EC2 Volume persistente para storage CI/CD (GitHub Actions): em cada PR/push — Brakeman, Bundler Audit, Importmap Audit, RuboCop e testes com PostgreSQL 17. No merge em master, deploy automático via kamal deploy com secrets (RAILS_MASTER_KEY, POSTGRES_PASSWORD, GHCR_TOKEN, chave SSH).

O Impacto no Negócio

O portfólio centraliza a presença profissional online: projetos e stack acessíveis em segundos, currículo em PDF para download e contato direto — reduzindo fricção para recrutadores e clientes. A gestão autônoma pelo admin elimina dependência de terceiros para atualizar cases, tecnologias ou bio. SEO e performance ajudam indexação orgânica. O pipeline CI/CD garante que só código validado chega à produção, com deploy em minutos após merge. Como side project, também funciona como prova de competência em Rails, DevOps (Kamal/Docker/EC2) e boas práticas (testes, segurança, cache, UX) — alinhado ao posicionamento de desenvolvedor Full-Stack orientado a entrega e operação.

Tecnologias do Caso

Ruby
Ruby on Rails
Ruby ERB
TailwindCSS
Git
GitHub
GitHub Actions
Amazon AWS
Amazon AWS EC2

Metadados de Entrega

  • Categoria: Side Projects
  • Framework: Ruby on Rails 8.0
  • Banco: PostgreSQL
  • Publicado: Sim