This site: a portfolio and blog on Next.js with its own headless CMS, WebGL scroll effects, a filterable project archive and case-study pages like this one.






I wanted a portfolio that shows the work properly — screenshots, the story behind each project, and writing — and that I can update from a CMS instead of editing code.
The site runs on the Next.js App Router with GSAP and Lenis for motion and raw WebGL for the spinning work coil and light-streak backgrounds. Content comes from my own Express and MongoDB API with an admin app, and images are stored on Cloudflare R2.
Every project, post and page section is editable from the admin and appears on the site as soon as it's saved. The effects respect reduced-motion settings, and every visual has a keyboard and screen-reader equivalent.
The home page leads with selected work spinning on a WebGL coil, then capabilities, experience and writing. The projects archive filters by category, and each project has a page with an overview, key facts, a screenshot strip and the story behind it.
Everything is driven by a headless CMS I built for it: an Express API on MongoDB, an admin app for editing, media stored on Cloudflare R2, and on-demand revalidation so changes reach the site without a rebuild.