Skip to content
Back to Projects
My portfolio website

Project

Portfolio

The challenge

I wanted a portfolio I could keep up to date without touching code, that loads fast and that is usable for everyone, including keyboard and screen reader users.

My approach

  • Content model in Sanity (projects, skills, site settings), with the Studio embedded in the site.
  • Data fetched in React Server Components with cache tags; a Sanity webhook revalidates only what changed.
  • Every section streams in its own Suspense boundary with a skeleton.
  • Accessibility: semantic headings, WCAG AA contrast, a pausable carousel and full support for reduced motion.
  • SEO: generated sitemap, robots.txt, canonical URLs and a dynamic Open Graph image.

Result

A site that updates within seconds of publishing, with self-hosted fonts, server-rendered icons and a secured revalidation webhook.

What I learned

Caching and revalidation in the App Router, designing a content model for non-developers, and auditing my own work for accessibility and performance.