Auth provider
Every verified stack secured with Auth.js (NextAuth).
Auth.js (NextAuth v5) — self-hosted OAuth running inside your app against your database (Drizzle adapter).
Why Auth.js (NextAuth), specifically
note
Self-hosted + OAuth-first: NextAuth owns the user/account/session/verificationToken tables (Auth.js Drizzle schema). This stack emits them (db/auth-schema.ts) and hands them to the Drizzle adapter, so app-type schemas can foreign-key `user` directly.
note
OAuth (GitHub) is wired by default — sign-in creates the account, so there is no separate email-signup step. Swap or add providers in src/lib/auth.ts.
What Auth.js (NextAuth) pulls in
bun add next-auth @auth/drizzle-adapterAUTH_SECRETgenerate with `npx auth secret` (or `openssl rand -base64 32`)AUTH_GITHUB_IDGitHub OAuth app client idAUTH_GITHUB_SECRETGitHub OAuth app client secret80 verified stacks
✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)