A full-stack Next.js + Supabase dashboard application — built around Server Components and SSR, with complete authentication, protected routes, and a responsive light/dark UI. The application lives in supabase-nextjs-app/.
- Authentication — email/password and Google sign-in, plus forgot/reset-password flows, powered by Supabase Auth
- Route groups — clean separation of
(public),(private), and(auth-pages)with a session-awaremiddleware.ts - Server-first data access — fetches data directly in Server Components, avoiding unnecessary API routes
- Protected areas — dashboard, profile, and settings behind auth
- Polished UI — Tailwind CSS + shadcn/ui (Radix primitives), collapsible sidebar, light/dark theming via
next-themes, WCAG-minded accessibility - Type-safe end to end with TypeScript
Next.js (App Router) · Supabase (Auth + PostgreSQL, @supabase/ssr) · TypeScript · Tailwind CSS · shadcn/ui · next-themes
| Path | Purpose |
|---|---|
supabase-nextjs-app/ |
The Next.js + Supabase application (app README) |
memory-bank/ |
Living documentation of the build — product context, architecture decisions, and progress |
This project is also a demonstration of disciplined, spec-driven AI-assisted development. Rather than ad-hoc prompting, the work was planned and tracked through a structured "memory bank" — capturing the product context, system patterns, and a decision log up front, then implementing against them. See memory-bank/decisionLog.md and memory-bank/systemPatterns.md for the reasoning trail.
cd supabase-nextjs-app
npm install
# Configure Supabase credentials
cp .env.example .env.local # set NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY
npm run dev # http://localhost:3000You'll need a Supabase project — grab the URL and anon key from Project Settings → API. Full details are in the application README.