Building this personal website
Published July 2025
I have had a personal domain for years but never a proper site. This time I wanted something minimal, fast, and easy to maintain — a place to write, show projects, and experiments.
Why rebuild
My old sites were either templates I never customized or projects that grew stale. I wanted full control: no CMS, no build pipeline complexity, just React components I can edit directly. Hardcoded content means no database, no deploy pipeline surprises — just push and it works.
Tech stack
I went with TanStack Router and Start for file-based routing and server-side rendering. React for the UI, Tailwind CSS for styling, and shadcn/ui (the base-ui variant) for components. Everything deploys to Cloudflare.
The stack is intentionally boring. I did not want to spend time configuring webpack or fighting build tools. TanStack Start handles the heavy lifting, and I focus on the content.
Design
I took heavy inspiration from brianlovin.com — clean typography, left-aligned text, no hero images or flashy graphics. The homepage has a small avatar, my name, a one-liner bio, and lists for writing and projects. That is it.
The theme system supports light, dark, and system modes with a preference for oklch colors. A dynamic favicon swaps between light and dark variants based on the active theme.
Using AI in development
I built this site almost entirely through conversation with Claude Code. Not as a code generator that spits out a project — more like a pair programmer. I would describe what I wanted, it would implement it, and we would iterate.
The workflow looked like this: I had an idea or saw a design I liked, described it in plain language, and Claude would write the code. I would review, point out issues, and we would refine together. It handled everything from component architecture to fixing lint errors across 30+ files.
Where it really saved time was the tedious stuff: rewriting shadcn components to fix type errors, setting up the theme provider with proper SSR handling, creating the PWA manifest, and wiring up the command menu. Tasks that would have taken me an afternoon of Stack Overflow searching took minutes.
What it did not do: make design decisions. I still chose the layout, the colors, the content, and the overall direction. AI is a accelerator, not a replacement for taste.
What is next
More writing, more projects, and eventually a proper about page with my full stack and history. The structure is in place — now it is just about filling it with things worth reading.