A place for the whole picture
My work spans internal tools, AI workflows, client platforms, apps, and games. I wanted a place where all of that could sit together and still feel like me.
The home page gives you a way in. The project pages explain what I built and why. The About page connects the work to my story. You can skim, dig into a project, or stay for a game.
Room to read
Warm paper, blue accents, and generous space give the site its foundation. Instrument Serif brings character to the headings; Inter keeps the longer stories and small interface details easy to read.
The layout makes room for each kind of work. Apps appear in phone frames, websites in browser windows, and games through artwork, footage, and playable builds. The presentation follows the thing I made.
On desktop, selected projects move across the screen as you scroll. On touch devices and shorter screens, the same collection becomes a horizontal scroller with buttons. The work stays accessible in either format.
An invitation to play
The Game Boy in the hero is a small invitation to explore. Its shell is built with CSS, and its controls connect to the games inside. Trevor’s World turns the portfolio into rooms, discoveries, and things to collect.
Little Railway leads the home page’s project collection: a miniature workshop where you can lay tracks and build a world. The arcade brings together the wider collection, including Tilt World and Pulsekeeper.
Playable builds live alongside the stories behind them. Some are still in development, and the project pages say so. I like sharing work while there is still room for it to grow.
Piece by piece
The About page has a brick-built portrait that assembles as you read my story, then turns through the experience timeline. It starts with an empty base: a small visual connection to how I learned to build real systems and software.
The portrait uses Three.js through React Three Fiber. It prepares before you reach the section, while scroll position controls the build. Scrolling back takes it apart; a reduced-motion setting provides a still portrait.
Under the surface
The site runs on React, TypeScript, and Vite, with CSS Modules for component styling. GSAP and ScrollTrigger handle the scroll sequences, and Lenis coordinates smooth scrolling. Netlify hosts the site and handles the contact form.
Project content feeds the cards, filters, individual project pages, and metadata. The experience content supports the timelines and resume. Keeping those connections in one system makes updates easier to carry through the site.
Every public route is built into HTML, with a sitemap and a separate 404 page. Fonts are hosted locally, images have responsive sizes, and game stages load when you choose to play. The PDF resume comes from the on-site resume component.
Building with AI
Claude Code and Codex have been part of building and refining this site. I use them to implement ideas, explore options, and work through problems. The direction comes from what I want to make and how I want it to feel.
The original brief was a starting point. The site took shape through repeated decisions about the writing, artwork, interactions, and work worth featuring. Much of that happened after there was already a working version to react to.
Testing belongs in that process. A page can look right on its own and break after navigating from somewhere else. I use browser checks, small-screen reviews, and keyboard testing to check the experience beyond a screenshot.
A site I’ll keep using
The site has a shape now, but the work will keep changing. New projects will arrive, playable builds will develop, and older stories will need another edit. The numbers above come from the current collection so they can keep up.
I want this to remain a place I enjoy adding to: useful enough to explain my work, personal enough to recognize me in it, and playful enough to give you a reason to stay a little longer.