Skip to content

MY PORTFOLIO

Designing and building my own portfolio, from the first frame in Figma to the live site you are reading now.

The portfolio home page shown on a MacBook in a dark studio setting

Product Overview

PRODUCT OVERVIEW

This portfolio is a project I designed and built on my own, start to finish. I did not want a folder of screenshots. I wanted a small product that shows how I think and feels good to use. I designed it in Figma and built the whole thing with Claude, working from the design straight into the code. Every page is made of small cards, so you can read who I am and what I make at a glance. It is the site you are looking at right now.

The works page listing selected projects in a grid

WHAT I WANTED

  • 01

    Show how I think, not just what I made

    I wanted the site itself to read like a piece of my work. Clear structure, an honest look at the process, and a point of view you can feel on every page.

  • 02

    Feel alive, but stay out of the way

    The motion is there to give the site some personality, like the intro loader and the small hidden game. It should never slow you down, and it turns itself off for anyone who prefers less movement.

  • 03

    Be easy to keep up to date

    Adding a new project or a new case study should not mean rebuilding a page. I keep all the words and images in plain content files, so the site grows by editing text.

Early Conception in Figma

DESIGN & CONCEPT

It started in Figma. I began with rough wireframes to work out the card layout. How many cards there should be, what each one needed to say, and how they should stack on a phone versus a laptop. Once the structure felt right, I built a small set of design choices to hold everything together. A near black background, one purple I use only for buttons and links, Geist for all the text with Kode Mono kept just for the logo, and soft card surfaces. I saved these as Figma variables and turned the repeating pieces into components, so the colours, spacing, and type sizes all lived in one place. That paid off when it came time to build, because Claude could read the variables straight from the file and pull the components and images out as it went, instead of me handing over every value by hand. I then drew the home, works, about, and contact screens in full detail and prototyped the moments that needed to move, like the intro loader and the contact panel, before any code was written.

The contact panel open over a blurred version of the home page

HOW I WORKED

  • 01

    Gather and decide

    I collected references, wrote down the story each page had to tell, and settled on the tone before I opened Figma.

  • 02

    Wireframe and prototype

    Rough card layouts first, then detailed screens and clickable prototypes for the loader and the contact panel.

  • 03

    Turn the design into a system

    I saved the colours, type, and spacing as Figma variables and turned repeating pieces into components, so the tokens and assets sat in one place and the code and design never drift apart.

  • 04

    Build, then ship

    I built the pages in React with Claude, checked them for speed and for people who prefer less motion, then pushed to GitHub and let Vercel take it live.

How I Built It

TECH STACK

I built the site with Claude, using Next.js and TypeScript, and styled it with Tailwind that reads from the same variables I set up in Figma, so the design and the code stay in step. Framer Motion handles the entrance and scroll animations. There is no database and no content system behind it. Every page is turned into plain HTML at build time, which keeps it fast and simple to host. Images are served in modern formats through Next.js so they stay light without looking soft.

The about page, with a large intro heading, an expertise list, and a statement

Responsive Design

RESPONSIVE

The layout is built to fit whatever screen you are on. On a phone the cards stack into a single column you can thumb through in one hand. On a laptop they open out into the full grid. A few of the heavier moving parts, like the zoom on the about page, only run on bigger screens where there is room for them, so the phone version stays quick to load and easy to read.

The home, works, and about pages shown on three phone screens

Shipping It Live

BUILD & DEPLOY

The code lives in a GitHub repository, which is my single source of truth and my record of every change I have made. Vercel is connected to that repository, so each time I push an update it builds the site and puts the new version online in about a minute. The site runs on my own domain, which I point at Vercel, and I manage that domain and its DNS records on Cloudflare. In practice this means I can go from an edit on my machine to a live change on the site in one push, with nothing to set up by hand each time.

Final Designs

Home page, the full grid of cards
Works page, selected projects in a grid
About page, with the intro, expertise, and statement
Contact panel open over the home page

Looking Back

REFLECTIONS

Designing and building the same thing myself meant there was no gap between what I drew and what shipped. Every spacing and every bit of motion is what I intended. Keeping the content in plain files paid off too. This very case study went in without me touching the layout, which was the whole idea. A site that keeps up with the work instead of falling behind it.

One pushfrom edit to liveGitHub to Vercel in about a minute
No databaseevery page is plain HTMLbuilt once, fast to serve
Motion safeanimation you can turn offit respects your system setting
One fileto add a projectcontent lives in plain files