Contexto
Este é o site que você está navegando agora. Foi construído para apresentar quem sou, no que trabalho e os projetos que já entreguei — com foco em performance, conteúdo versionado e uma aparência limpa e moderna.
A premissa de arquitetura é simples: HTML estático por padrão, JavaScript só onde agrega. O Astro renderiza tudo em build e hidrata apenas ilhas pontuais de React (troca de idioma, interações), mantendo o peso da página baixo.
Conteúdo como dados
Cada projeto é um arquivo .mdx em src/content/projects/, validado por um schema Zod via Astro Content Collections. A home renderiza os cards a partir dessa collection e cada projeto ganha uma página dedicada gerada por rota dinâmica (projects/[slug]).
src/content/projects/<slug>-pt.mdx
src/content/projects/<slug>-en.mdx
- Frontmatter tipado — título, resumo, tags, screenshots, captions e links são validados em build; campo fora do schema quebra o build.
- Galeria de screenshots com legendas por imagem.
- Navegação prev/next entre projetos, gerada automaticamente a partir da ordem da collection.
Bilíngue (pt-BR / EN)
Internacionalização com o i18n nativo do Astro: pt como locale padrão (sem prefixo) e en servido em /en. Os textos de interface vivem em arquivos JSON (src/i18n/), e cada projeto tem sua variante -pt e -en.
Stack
| Camada | Tecnologia |
|---|---|
| Framework | Astro 5 (output estático, ilhas de React) |
| UI | React 19, TypeScript |
| Estilo | TailwindCSS |
| Conteúdo | MDX + Astro Content Collections (schema Zod) |
| Ícones | lucide-react |
| Tipografia | Inter (corpo) + JetBrains Mono (código) via @fontsource |
| Qualidade | ESLint + Prettier (prettier-plugin-astro) |
| Hospedagem | Cloudflare Pages (deploy contínuo no push) |
Decisões de projeto
- Estático por padrão — sem servidor em runtime; o site é só HTML/CSS/JS pré-renderido, servido na borda do Cloudflare.
- Conteúdo desacoplado da UI — adicionar um projeto é criar dois
.mdx; nenhum componente precisa mudar. - Acessibilidade e SEO — meta tags por idioma, marcação semântica e hierarquia de headings consistente.