Skip to content

Latest commit

 

History

History
98 lines (59 loc) · 3.05 KB

README.md

File metadata and controls

98 lines (59 loc) · 3.05 KB

Next.js 14, NextAuth.js v5, MongoDB, Typescript Example

A demo project that uses NextAuth.js v5 for authentication, connects to MongoDB with Mongoose, and supports Google OAuth and email/password login.

Features

  • OAuth: Log in with Google.

  • Credential Login: Log in with email and password.

  • Email Verification: Confirm user's email address.

  • Forgot Password: Reset user's password through an email.

  • Two Factor Verification: Obtain a six-digit login code through an email.

  • Settings Edit: Change user's settings, including name, password, and toggle Two-factor verification.

This is a Next.js project bootstrapped with create-next-app.

Environment Setup

Create a .env file in the root directory and add the following variables:

NEXT_PUBLIC_APP_URL="http://localhost:3000"

AUTH_SECRET="YOUR_AUTH_SECRET"

MONGODB_URI="YOUR_MONGODB_URI"

GOOGLE_CLIENT_ID="YOUR_GOOGLE_CLIENT_ID"
GOOGLE_CLIENT_SECRET="YOUR_GOOGLE_CLIENT_SECRET"

TOKEN_SECRET="YOUR_TOKEN_SECRET"

# Resend
RESEND_API_KEY="YOUR_RESEND_API_KEY"
RESEND_EMAIL_URL="YOUR_RESEND_EMAIL_URL"

# OR

# Nodemailer
EMAIL_USER="YOUR_EMAIL_USER"
EMAIL_PASSWORD="YOUR_EMAIL_PASSWORD"

GOOGLE_CLIENT_ID & GOOGLE_CLIENT_SECRET

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.