Portfólio pessoal desenvolvido para apresentar meus projetos, habilidades e formas de contato. A página é dividida em quatro seções principais: apresentação com stack de tecnologias, galeria de projetos com filtros e sistema "mostrar mais/menos", serviços oferecidos e seção de contato com formulário funcional.
- HTML5 — estruturação semântica com
<header>,<main>,<section>e meta tags Open Graph - CSS3 — estilização com animações, CSS Grid, Flexbox, CSS Nesting e variáveis
- JavaScript (vanilla) — lógica de tema, idioma, animações, formulário e partículas
- particles.js — background animado com partículas (modo claro)
- FormSubmit — envio de formulário de contato sem back-end
- Google Fonts — tipografia com as fontes Asap (títulos), Maven Pro (texto) e Inconsolata (subtítulos)
- WebP — formato moderno de imagens para melhor performance
- ✅ Foto de perfil com ícone de código sobreposto
- ✅ Texto de apresentação com animações sequenciais de entrada (fadeIn com delays)
- ✅ Stack de tecnologias em formato de tags (React, TypeScript, JavaScript, Node.js, Tailwind, HTML, CSS, MySQL, GitHub, Git Bash)
- ✅ Tags com animação de entrada deslizante (slide-in) em cascata
- ✅ Botão de seta com animação de bounce indicando scroll para projetos
- ✅ Scroll suave com easing personalizado ao clicar na seta
- ✅ Galeria de 16 projetos com thumbnails coloridos e links externos
- ✅ Filtros por categoria: Todos / HTML & CSS / JavaScript / Fullstack & IA
- ✅ Sistema "Mostrar mais/menos" que calcula automaticamente quantos cards cabem em 2 linhas
- ✅ Recalculo automático da quantidade visível ao redimensionar a tela (via
ResizeObserver) - ✅ Cards aparecem progressivamente com
IntersectionObserver(animação ao entrar na viewport) - ✅ Efeito hover nos cards com outline colorido
- ✅ Bordas superiores coloridas em cards específicos para destaque visual
- ✅ Botão "Mostrar mais" com animação de pulse para chamar atenção
- ✅ 3 cards apresentando serviços oferecidos (Websites, API/Banco de dados, DevOps)
- ✅ Animação de entrada sequencial nos cards ao entrar na viewport
- ✅ Efeito hover com shine sweep (gradiente passando pelo card)
- ✅ Rotação do ícone no hover
- ✅ 4 links para redes sociais e contato (LinkedIn, Instagram, GitHub, E-mail)
- ✅ Efeito hover com deslocamento horizontal e mudança de cor nos ícones
- ✅ Sublinhado animado na parte inferior do link
- ✅ Formulário de contato funcional via FormSubmit (sem back-end)
- ✅ Toggle entre dark mode e light mode com salvamento no
localStorage - ✅ Background animado com particles.js no modo claro (partículas azuis em movimento)
- ✅ Lógica de elevação: cards brancos sobre superfícies cinzas no modo claro
- ✅
theme-colormeta dinâmico para a barra do browser em mobile - ✅ Transições suaves entre os temas
- ✅ Suporte a PT-BR e EN com toggle e salvamento no
localStorage - ✅ Todos os textos, placeholders e labels do formulário traduzidos
- ✅ Atributo
langdo HTML atualizado dinamicamente para leitores de tela
- ✅
prefers-reduced-motion— animações desativadas para quem usa essa preferência no sistema - ✅
aria-labelem todos os elementos interativos sem texto visível - ✅ Foco visível via teclado (
:focus-visible) em links e botões - ✅
aria-pressederole="group"nos filtros de projeto - ✅
aria-live="polite"no status do formulário de contato
| Cor | Hex |
|---|---|
| ⬛ Base 100 (bg) | #0D0E11 |
| ⬛ Base 200 | #16181D |
| 🔲 Base 300 | #292C34 |
| 🔘 Base 400 | #878EA1 |
| ⚪ Base 500 | #C0C4CE |
| ⚪ Base 600 | #E2E4E9 |
| 🔴 Red | #E3646E |
| 🟣 Purple | #7C3AED |
| 🔵 Blue | #3996DB |
| 🟢 Green | #82BC4F |
| 🟡 Yellow | #EABD5F |
| Cor | Hex |
|---|---|
| 🔘 Base 100 (fundo) | #E8EAEE |
| ⚪ Base 200 | #F1F3F6 |
| ⚪ Base 300 (cards) | #FFFFFF |
| 🔘 Base 400 | #6B7079 |
| ⬛ Base 500 | #3C414A |
| ⬛ Base 600 | #16181D |
| 🔴 Red | #D24C5A |
| 🟣 Purple | #7C3AED |
| 🔵 Blue | #2C7FC4 |
| 🟢 Green | #6FAE3E |
| 🟡 Yellow | #D29A33 |
📦 rochacode08.github.io
┣ 📂 assets
┃ ┣ 📂 icons → Ícones SVG (tecnologias, redes sociais, UI)
┃ ┗ 📂 images → Backgrounds, thumbnails e foto de perfil (WebP)
┣ 📂 style
┃ ┣ 📜 global.css → Reset, variáveis e estilos globais
┃ ┣ 📜 themes.css → Tema claro/escuro + controles de tema/idioma
┃ ┣ 📜 header.css → Seção de apresentação
┃ ┣ 📜 main.css → Galeria de projetos e botão mostrar mais
┃ ┣ 📜 section-services.css → Seção de serviços
┃ ┣ 📜 section-links.css → Seção de contato e formulário
┃ ┣ 📜 animations.css → Animações e keyframes
┃ ┗ 📜 responsive.css → Media queries (6 breakpoints)
┣ 📂 js
┃ ┣ 📜 i18n.js → Sistema de internacionalização PT-BR / EN
┃ ┣ 📜 theme.js → Toggle de tema claro/escuro
┃ ┣ 📜 particles.js → Background de partículas (modo claro)
┃ ┣ 📜 animations.js → IntersectionObserver + scroll suave
┃ ┣ 📜 viewMore.js → Lógica do "mostrar mais/menos" e filtros
┃ ┗ 📜 contactForm.js → Envio do formulário via FormSubmit
┗ 📜 index.html → Página principal
O projeto conta com 6 breakpoints para suporte a múltiplos tamanhos de tela:
| Dispositivo | Largura | Principais ajustes |
|---|---|---|
| 💻 Desktop / Tablet | até 1024px | Ajustes no container, tags e grid de projetos |
| 📱 Tablet | até 768px | Tipografia reduzida, cards em colunas menores |
| 📱 Mobile | até 425px | Links compactos, tipografia fluida com clamp() |
| 📱 Mobile S | até 375px | Cards em coluna única, avatar menor |
| 📱 Mobile XS | até 320px | Títulos menores, tags compactas |
O projeto foi otimizado com foco em Core Web Vitals e auditado pelo Google Lighthouse:
- ✅ Preload +
fetchpriority="high"na foto de perfil (Largest Contentful Paint) - ✅ Conversão de imagens PNG → WebP (redução significativa no tamanho dos arquivos)
- ✅
widtheheightexplícitos em todas as imagens (evita Cumulative Layout Shift) - ✅
loading="lazy"em imagens abaixo do fold (carregamento sob demanda) - ✅ Scripts com
defer(carregam em paralelo, não bloqueiam o render) - ✅ CSS carregado em paralelo (substituindo
@importem cascata) - ✅ Fontes do Google otimizadas (apenas os pesos realmente utilizados)
- ✅ Tema aplicado antes do primeiro render (sem flash de tema errado)
Clone o repositório:
git clone https://github.com/rochacode08/rochacode08.github.io.gitAcesse a pasta do projeto:
cd rochacode08.github.ioAbra o arquivo index.html no navegador — ou utilize a extensão Live Server do VS Code para recarregamento automático.
- IntersectionObserver API para animar elementos ao entrarem na viewport
- ResizeObserver API para recalcular layouts dinamicamente
- MutationObserver para detectar mudanças de tema e sincronizar o particles.js
- Scroll suave customizado com
requestAnimationFramee easingeaseInOutCubic - Sistema de internacionalização com dicionário e
localStorage - Toggle de tema com persistência e atualização de
theme-colormeta - Cálculo dinâmico de quantos cards cabem em 2 linhas do grid
- Filtros de categoria com controle de estado e animação de entrada
- CSS Nesting nativo em todos os arquivos
- Dual theming com CSS Custom Properties e seletor
[data-theme="light"] - Lógica de elevação: superfícies mais claras que o fundo no tema claro
- Animações complexas com
@keyframes(fadeIn, slideIn, bounce, pulse, shine) - Animações com delays em cascata usando
nth-child - Efeito shine com pseudo-elemento e
background: linear-gradient - Filtros CSS (
filter: invert sepia saturate hue-rotate) para colorir SVGs dinamicamente prefers-reduced-motionpara desativar animações via preferência do sistema- Uso de
clamp()para tipografia fluida em mobile
- Estruturação semântica com
<header>,<main>,<section> - Meta tags Open Graph para compartilhamento em redes sociais
- Atributos
data-i18nedata-i18n-placeholderpara internacionalização aria-label,aria-pressed,aria-live,rolepara acessibilidaderel="noopener noreferrer"em links externos (segurança)- Favicon com múltiplos tamanhos (32x32 e Apple Touch Icon)
- Adicionar modo light mode com toggle
- Implementar suporte a múltiplos idiomas (PT-BR / EN)
- Adicionar filtro/categorias na seção de projetos (HTML/CSS, JS, Fullstack & IA)
- Integrar formulário de contato funcional
- Adicionar
prefers-reduced-motionpara acessibilidade - Adicionar página individual para cada projeto com case study
- Implementar blog/artigos sobre desenvolvimento
- Alcançar 100/100 no Lighthouse mobile
Este projeto está sob a licença MIT. Sinta-se à vontade para usá-lo como inspiração!
Desenvolvido com 💙 por Gabriel Rocha Lopes


