feat: replace Supabase auth with Clerk

↗ view on GitHub · Claude · 2026-05-20 · aa9602ce

Swap Gary's built-in Supabase login/signup flow for Clerk so the app can
run as a protected one-person web app on Vercel.

- Add @clerk/nextjs; wrap the root layout in ClerkProvider
- Add Clerk middleware (proxy.ts) that protects every route except
  /login and /signup
- Render Clerk SignIn/SignUp at the existing /login and /signup URLs
- Back the useAuth() compatibility hook with Clerk instead of Supabase
- Replace the sidebar account dropdown with Clerk UserButton
- Send the Clerk session token on backend requests via a shared helper
- Remove the Supabase client, JWT helper, and @supabase/* frontend deps
- Document Clerk env vars and setup in the env examples and docs

The separate Express backend still verifies Supabase JWTs; swapping it to
verify Clerk tokens is a documented follow-up.

https://claude.ai/code/session_018GMAE164ehpBTxzBdsof9r
Repository zgbrenner/gary
Author Claude <noreply@anthropic.com>
Authored
Parents a23d4303
Stats 28 files changed , +739 , -1056
Part of Auth migration: Supabase Auth → Clerk, with Supabase data/storage layer

Capture this commit into my fork

Download a Markdown prompt that tells Claude how to port this exact commit into your working tree. Run it via claude -p < capture-commit-aa9602ce.md from inside the repo you want the change in.

⬇ Download capture-commit-aa9602ce.md