Building This Portfolio
This site is a bit of a flex — on purpose. It's a single immersive page: a WebGL plasma reactor, a synthesized UI sound engine, and an avatar you can actually talk to.
The stack (or lack of one)
No framework. The whole thing is static files plus one serverless function:
- Three.js + GLSL for the reactor beam, bloom, and the animated dais glow.
- Web Audio for every click and swoosh — no audio files, all synthesized.
- A single Vercel function that proxies the chat to Claude so my API key never touches the browser.
Why no Next.js?
Because there's nothing to server-render. It's one canvas. SSR, routing, and image optimization buy almost nothing here, and they'd add a build step I don't need.
The rule I'm following: stay static until pages start sharing real structure. When a proper blog or CMS shows up, that's the signal to graduate — not before.
Content
Structured bits (skills, project cards) live as data. Long-form writing — like this
post — is plain Markdown, fetched and rendered at runtime. Want a new post? Drop a
.md file and add one line to the index. That's it.
Want a build like this, no framework bloat? Open a channel and we will plot the shape of it.