Sylvino Prevot
Case Study // 001

Portfólio
Pessoal & Blog

Astro FrameworkTailwind CSS v4TypeScriptCloudflare Pages

Esse portfólio roda em arquitetura de ilhas (Astro Islands): pouco JavaScript no cliente, nada da complexidade desnecessária de SPA. Os números aí embaixo (Performance e SEO no Lighthouse) são do site que você está usando agora.

100/100

Performance

100

SEO Score

Production Ready V1.0.0

Saiba mais sobre a arquitetura técnica

Quer entender como isso foi construído por baixo do capô? Abra o mergulho técnico abaixo.

expand_more

Visão Técnica

Portfólio pensado como demonstração de engenharia web, não só currículo. Eliminei o JavaScript desnecessário do lado do cliente — comum em SPAs tradicionais — com uma abordagem Multi-Page App moderna e hidratação parcial.

Tecnologias Principais

Astro Framework rocket_launch
Tailwind CSS v4 format_paint
TypeScript data_object
Cloudflare Pages cloud
warning

O Desafio

Portfólio construído em React ou Next.js puro costuma sofrer com 'Hydration Mismatch' e payload de JS grande demais para páginas que são, na prática, quase todas estáticas. O desafio era:

  • / Garantir pontuação máxima no Lighthouse (Performance e SEO).
  • / Criar um CMS 'Headless' local fácil de manter sem depender de banco de dados externo.
  • / Manter a tipagem forte (TypeScript) nos dados de conteúdo.
check_circle

A Solução

Resolvi usando Astro Content Collections: todo dado de conteúdo (experiências, projetos) vira um JSON validado por um schema Zod rígido em tempo de build — se eu errar um campo, o build quebra antes de ir pro ar, não em produção.

src/content/config.ts
const experience = defineCollection({
  loader: glob({ pattern: "**/*.json", base: "./src/content/experience" }),
  schema: z.object({
    company: z.string(),
    role: z.string(),
    rotation: z.array(z.object({
      project: z.string(),
      stack: z.string()
    })).optional()
  })
});

Infraestrutura

architecture

Deploy & CI/CD

Hospedado na Cloudflare Pages com edge caching, com deploy automático a cada push na branch main.

Projeto Anterior
Próximo Projeto 3R Barber