Sylvino Prevot
Case Study // 001

Personal
Portfolio & Blog

Astro FrameworkTailwind CSS v4TypeScriptCloudflare Pages

This portfolio runs on an islands architecture (Astro Islands): minimal client-side JavaScript and none of the unnecessary SPA complexity. The numbers below (Performance and SEO on Lighthouse) are from the very site you are browsing right now.

100/100

Performance

100

SEO Score

Production Ready V1.0.0

Learn more about the technical architecture

Want to understand how this was built under the hood? Open the technical dive below.

expand_more

Technical Overview

A portfolio designed as a showcase of web engineering, not just a resume. I eliminated unnecessary client-side JavaScript — common in traditional SPAs — using a modern Multi-Page App approach with partial hydration.

Core Technologies

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

The Challenge

Portfolios built with pure React or Next.js often suffer from 'Hydration Mismatch' and bloated JS payloads for pages that are, in practice, almost entirely static. The challenge was:

  • / Ensuring perfect Lighthouse scores (Performance and SEO).
  • / Building an easy-to-maintain local 'Headless' CMS without relying on an external database.
  • / Maintaining strict typing (TypeScript) across all content data.
check_circle

The Solution

I solved this using Astro Content Collections: all content data (experiences, projects) becomes a JSON file validated against a strict Zod schema at build time — if a field is malformed, the build breaks before deployment, never in production.

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()
  })
});

Infrastructure

architecture

Deploy & CI/CD

Hosted on Cloudflare Pages with edge caching, with automatic deployment on every push to the main branch.

Previous Project
Next Project 3R Barber