A Next.js + Supabase + Inngest template with Anthropic-powered chat. See CLAUDE.md for the full stack overview and conventions.
After cloning, run the bootstrap script first to rename the project (slug,
display name, Inngest app id, Supabase project_id, page titles, CLAUDE.md):
pnpm bootstrap
pnpm installThen copy and fill in environment variables:
cp .env.example .env.localRequired env vars (see CLAUDE.md for the full list):
NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_DB_URL,SUPABASE_SERVICE_ROLE_KEYANTHROPIC_API_KEY- OAuth provider keys (GitHub or Google)
INNGEST_DEV=1for local dev
pnpm db:start prints fresh values for the Supabase keys.
pnpm db:start # boots local Supabase (Docker)
pnpm dev # generate → next dev (Turbopack) + Inngest dev serverOpen http://localhost:3000.
| Script | Purpose |
|---|---|
pnpm dev |
Full dev: codegen, Next.js, and Inngest concurrently |
pnpm build |
prebuild codegen, then next build |
pnpm generate |
Run all codegen once (Supabase types) |
pnpm bootstrap |
Rename the template to your project |
pnpm db:start |
supabase start (Docker) |
pnpm db:stop |
supabase stop |
pnpm db:reset |
Re-apply migrations + seed |
pnpm typecheck |
tsc --noEmit |
pnpm lint |
biome check . |
pnpm lint:fix |
biome check --write . |
pnpm format |
biome format --write . |
pnpm test |
vitest run |
pnpm test:watch |
vitest |
- Next.js (App Router, RSC, Turbopack), React 19, TypeScript (strict)
- Tailwind CSS v4, ShadCN UI (
new-york/neutral) - Supabase (Postgres + Auth), Kysely query builder
- Inngest for background jobs and chat streaming
- Vercel
ai+@ai-sdk/anthropic(claude-sonnet-4-6) - Biome (lint + format), Vitest + Testing Library + happy-dom
Easiest path: Vercel. You'll need a hosted Supabase project, an Inngest app, and the env vars above configured in the platform.