Back to Projects

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.