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.