This is the site you're looking at. Editorial brutalism meets basement-club: massive Fraunces display type, drifting CSS club lights, oxide-red accents, film-grain overlay. No scroll hijacking — native scroll only.
Stack: Next.js 16 on the App Router with React 19 Server Components, Tailwind v4 (CSS-first design tokens), Motion for the reveal animations, and a small set of hand-rolled UI primitives I fully own. Content lives in Supabase Postgres, colocated in another of my projects with all tables prefixed and gated by Row-Level Security. There's a /admin panel behind Supabase Auth so I can add projects, stuff, and update the about page without touching code — image uploads go straight to a public Storage bucket.
It was built end-to-end in collaboration with Claude — paired with the AI on architecture, scaffolding, design tokens, schema, and copy. A working example of what "AI-built" can actually look like when you treat the model as a senior collaborator instead of a fancy autocomplete.
Stack: Next.js 16 on the App Router with React 19 Server Components, Tailwind v4 (CSS-first design tokens), Motion for the reveal animations, and a small set of hand-rolled UI primitives I fully own. Content lives in Supabase Postgres, colocated in another of my projects with all tables prefixed and gated by Row-Level Security. There's a /admin panel behind Supabase Auth so I can add projects, stuff, and update the about page without touching code — image uploads go straight to a public Storage bucket.
It was built end-to-end in collaboration with Claude — paired with the AI on architecture, scaffolding, design tokens, schema, and copy. A working example of what "AI-built" can actually look like when you treat the model as a senior collaborator instead of a fancy autocomplete.
