Personal Portfolio Website

Personal Portfolio Website

Personal Portfolio Website

Sole developer, June 2026 to Present

Next.jsTypeScriptReactZustandreact-three-fiberThree.js

Problem

A resume and a list of links don't say much about how someone actually builds things. I wanted a portfolio that showed some front-end work directly, with real interactivity and some personality, without giving up a fast, crawlable site underneath it.

Approach

  • Built the Windows 95 desktop as a presentation layer over a fully server-rendered content layer, so every page still reads with JavaScript off.
  • Hand-built the drag-and-resize window system on Pointer Events, committing state only on release to keep dragging smooth.
  • Gated the 3D screensaver behind an idle timer and a dynamic import, and skipped it for reduced-motion, low-power, and no-WebGL visitors.
  • Used Next.js so the server-rendered and client-side layers could coexist without slowing down the initial load.
  • Kept window, focus, and desktop state on the client with Zustand.
  • Logged the architecture decisions and tradeoffs in a separate design-decisions file as I went.

Outcome

Live and running the dual-layer setup described above. The interesting parts were the rendering architecture, the low-level pointer handling for drag and resize, and keeping the 3D work off the critical path.

← All projects