Por que escolhi Astro para meu portfólio
A decisão de reconstruir meu portfólio em Astro, com Markdown como fonte da verdade e React apenas onde há interatividade real.
Meu portfólio nasceu em Jekyll. Funcionava, mas cada mudança pequena virava uma volta pelo Liquid, pelo Gemfile e por uma cadeia de layouts que eu já não lembrava de cor. Reconstruí tudo em Astro. Estas foram as razões.
HTML estático por padrão
Um portfólio é, na prática, um documento. Não precisa de rota dinâmica no servidor, nem de banco de dados, nem de um framework que hidrata a página inteira só para renderizar texto.
O Astro entrega HTML pronto e manda zero JavaScript por padrão. O que chega ao navegador é o que eu escolhi mandar. Neste site inteiro o único componente React é o filtro da página de projetos, e mesmo ele só hidrata quando entra na viewport.
Conteúdo separado dos componentes
A parte que mais me incomodava no modelo antigo era ter que editar componente para publicar conteúdo. Com as Content Collections do Astro, adicionar um projeto é criar um arquivo Markdown:
---
title: 'Meu Novo App'
year: 2027
type: 'Aplicativo'
featured: true
status: 'production'
published: true
technologies:
- React Native
- TypeScript
---
O arquivo aparece em /projetos, ganha uma página própria, entra na home se featured for
verdadeiro e vai para o sitemap. Nenhum componente muda.
Schemas que pegam erro humano
Cada collection tem um schema. Se eu escrever featured: "sim" em vez de featured: true, o
build falha com uma mensagem clara em vez de renderizar algo errado calado.
É o mesmo raciocínio de usar TypeScript no código, só que aplicado ao conteúdo. O erro aparece no build, não em produção.
React onde ele resolve algo
O Astro não me obriga a escolher um framework para o site inteiro. React entra como ilha, só onde tem estado de verdade. O filtro de projetos mantém a seleção ativa, e o resto da página continua sendo HTML estático gerado no build.
Tema claro e escuro, menu mobile e as animações de entrada não usam React. São poucas linhas de
JavaScript e CSS, mais um <dialog> nativo.
O resultado
O fluxo de manutenção virou o que eu queria: crio um .md, adiciono as imagens, faço push, e a
Vercel publica. Sem CMS, sem backend, sem passo no meio.
Se eu abrir este repositório daqui a seis meses, adicionar um projeto vai continuar sendo criar um arquivo de texto. Era isso que eu queria.