Skip to content
All projects
PERSONAL · 2025 – NOWFRONTEND

This site: a portfolio built like a product

Version 2 of my portfolio. Every page is pre-rendered, every word and image comes from validated JSON, and the whole thing is built from reusable components.

SHIPPED!
01

How it's built

Content as data

Projects, roles, stats and copy live in JSON files validated with Zod. A new project is a new file, not new code.

Pre-rendered pages

Every route is rendered to HTML at build time, so pages load fast and share with their own previews.

Accessible motion

Animations respect reduced-motion settings; keyboard focus is always visible.

Tested

Unit tests for the content, end-to-end tests for every route, and CI on every pull request.

02

Version 1

The first version of this portfolio
The single-page site this one replaced

Got a role, a project or a question?

Send a message right from the site. It lands straight in my inbox.

Say hi