app shell and providers
src/main.tsx nests:
StrictModeHelmetProviderQueryClientProvider(retry: 1,staleTime: 5 min)AuthProviderTooltipProviderRouterProvider
NuqsAdapter lives on the root route, not in main.tsx. Root route is only that adapter plus <Outlet />. No chrome layout. Every page paints its own terminal frame (term-window, CRT grid).
Auth#
If VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY are missing, supabase is null, isConfigured is false, and the dashboard still works. requireSupabase() throws with those env names. Public /$profileUsername then renders “Saved profiles are not configured”, not a 404.
Google OAuth via signInWithOAuth. redirectTo is the current URL or origin + next. Login validateSearch only keeps next if it starts with /.
/onboarding is an alias of /account (legacy OAuth redirect). README still tells you to allow-list /onboarding.
Routing internals#
Catch-all /$profileUsername is last in the child list so it cannot eat /app, /login, /github/$username. defaultNotFoundComponent is NotFoundPage. Vercel last rewrite is /(.*) -> /index.html, which is why the catch-all can be a client route.
Login and account strip unsafe next.