It's finally done. Or rather, it's finally started, because a personal site is never really done.
I've been meaning to build this for an embarrassingly long time. I had designs that were "almost there" sitting in Figma, half-finished prototypes in several repos, and more than a few "okay, this weekend I'll actually do it" moments that turned into debugging something else entirely. But here we are.
What this place is
This site is a few things at once:
A portfolio: the Works section has projects I've shipped. Right now it's just DPIP, but more will appear as I actually document things instead of just pushing code and moving on.
A blog: this is where I'll write about frontend development, TypeScript patterns, design decisions, and whatever I'm obsessing over at the moment. I write best when I'm explaining something I just figured out or arguing for an approach I believe in. Expect that energy.
A place to be a person: the VRChat page exists because that part of my life doesn't belong in a GitHub README. Some things deserve more room than a bullet point.
The stack
The site runs on TanStack Start deployed to Cloudflare Workers. The whole thing is written in TypeScript. Styling is TailwindCSS 4 with a custom design token system built on OKLCH colors. The blog is markdown files read via Vite's import.meta.glob at build time — no database, no CMS, just files.
I'll probably write a proper post about the architecture decisions once I've lived with them long enough to have opinions worth sharing.
What's next
More posts, more projects documented, and probably several rounds of "why does this look slightly off" micro-adjustments that only I will notice. The VRChat page still needs the photo grid filled in properly.
If you're reading this: hi. Thanks for stopping by.