How this site was made.
The honest version. Built on Base44, written in React, argued over with Claude Code and covered in paper and tape. Here's everything that went into it.
Recipe: one portfolio
serves: everyone
- 1 Base44 app
- React and Vite
- Tailwind CSS
- framer-motion (a lot)
- Lenis, for smooth scrolling
- Newsreader, Geist and Caveat
- paper, tape and doodles
- Claude Code
Method: build, break, fix, repeat.
What's under the paper
Every library here is doing a real job. No passengers.
Base44Hosting, the database and the admin panel I write posts in.
- ReactEvery page and every component.
- ViteThe dev server and build tool. Save, reload, done.
- Tailwind CSSAll the styling, straight in the markup.
- framer-motionEvery stagger, wobble, drag and drawn line.
- LenisThe smooth scrolling. It switches off if you ask for less motion.
- React RouterMoving between pages without a full reload.
- TanStack QueryFetches content from the database, with bundled copies as a backup.
- Radix UIAccessible menus and dialogs under the hood.
- react-markdownTurns blog posts and the legal pages into proper HTML.
- simple-iconsThe brand logos, like the ones on this page.
- canvas-confettiThe confetti. Obviously.
Three fonts and a typewriter
All from Google Fonts. Type something and see it in each one.
- NewsreaderHeadlines and big quotes
I build apps that look designed.
- GeistEverything you read and click
I build apps that look designed.
- CaveatHandwritten notes like this one
I build apps that look designed.
- Geist MonoLabels, code and tiny metadata
I build apps that look designed.
Pastels, mostly
Tap a swatch to copy its hex. The lime comes from the background of my portrait. Papaya and azure only ever show up in small doses.
I'm colour blind, so nothing on this site relies on colour alone to make sense. How that works
Real screenshots, then scrapbooked
Every case-study screenshot is a real capture of the live app. For the scrapbook versions, I used GPT Image 2 through Higgsfield to add the paper, tape and handwritten notes around them. The UI itself is left exactly as it is.


And the only picture of me
This illustrated portrait is the only image of me on the site, and it's used as-is everywhere. No photos.
The people and tools behind it
Built with Claude Code
Written with Claude Code in my terminal. Yes, I still pay for Codex too. The opinion changelog lives on my uses page.
What I useInspired by Craft's scrapbook look
The paper, tape and pastel style is inspired by Craft. Every scrap, sticker and doodle here is drawn from scratch in code.
craft.do (opens in a new tab)Synced through GitHub
The code lives on GitHub and syncs both ways with Base44. Every change has a paper trail.
My GitHub (opens in a new tab)
By the numbers
78
pages in the sitemap
34
terms in the glossary
4
font families
5
case studies
0
em dashes. I checked.
A few secrets
The Konami code
Type it anywhere on the site.
Triple-click the logo
Top left. Three quick clicks.
Drag the stickers
Most of them come unstuck. Try the one up top.
Get lost on purpose
Type any made-up address. The 404 page has a game.
Like how this looks?
I can make yours look designed.
Tell me about your app. I read every message.
