Learn authentication with Better-Auth in Next.js! We will cover:
- What makes Better-Auth better than its alternatives - How to set up Better-Auth with Prisma and PostgreSQL - How to use plugins in Better-Auth - How to add email & password login - How to add social login (OAuth) with Google and GitHub - How to add roles and handle authorization - How to protect pages with unauthorized.tsx and forbidden.tsx - How to send transactional emails like verification and password reset emails with Resend - How to use hooks to enforce custom password validation rules - How to update user data like profile image, username, password, and email - Important best practices like SSR and caching - How to deploy your Better-Auth project to Vercel - And much more!
Links & files: Starting code: https://github.com/codinginflow/better-auth-tutorial/tree/starting-code Final code: https://github.com/codinginflow/better-auth-tutorial Prisma + Better-Auth setup guide: https://pris.ly/betterauth-nextjs lib/prisma.ts: https://github.com/codinginflow/better-auth-tutorial/blob/final-project/src/lib/prisma.ts Get your domain at Namecheap: https://namecheap.pxf.io/c/3559246/1632743/5618
ā Get my full-stack Next.js with Express & TypeScript course: https://codinginflow.com/nextjs ā Get my free React Best Practices course: https://www.codinginflow.com/reactbestpractices š Join my newsletter for regular web dev tips: https://codinginflow.com/newsletter š¬ Join our developer community on Discord: https://codinginflow.com/discord
š£ Follow Coding in Flow on social media: Twitter: https://twitter.com/codinginflow Instagram: https://instagram.com/codinginflow TikTok: https://tiktok.com/@codinginflow Facebook: https://facebook.com/codinginflow
Timestamps: 0:00 - Why choose Better-Auth for authentication? 1:19 - Starting code setup 3:48 - Prisma & Prisma Postgres DB setup 7:50 - Better-Auth setup 16:16 - Email sign-up + sign-in 29:29 - Load session + user data (SSR) & protect pages (unauthorized.tsx) 36:18 - Custom User type with additional fields ($Infer.Session, $Infer.User) 44:55 - Request deduplication with React.cache 47:24 - Admin role (forbidden.tsx, server action) 52:47 - Email verification (Resend) 1:08:33 - Forgot password/reset password 1:18:08 - Hooks (custom password validation rules, APIError) 1:26:28 - Social login with Google & GitHub (OAuth) 1:36:26 - Redirects (route groups, layout.tsx, usePathname, useSearchParams) 1:42:48 - Update user profile data + image 1:47:31 - Change email 1:53:15 - Change password 1:56:21 - Revoke sessions (logout everywhere) 1:58:08 - Deployment to Vercel 2:01:00 - Outro + FREE React Best Practices course