# NextAuth v5 + Next.js 15 + React 19 + Mongoose Starter 🔥
A production-ready authentication template using NextAuth v5, MongoDB/Mongoose, and TypeScript. It supports both credentials and OAuth providers.
## 🚀 Quick Start
### 1. Clone the repository:
```bash
git clone [email protected]:dharmveer97/next-auth-mongoose.git
cd next-auth-mongoosenpm install
# or
bun installMONGODB_URI="your_mongodb_connection_string"
NEXTAUTH_SECRET="generated_secret_here"
NEXTAUTH_URL="http://localhost:3000"
GOOGLE_CLIENT_ID="your_google_oauth_id"
GOOGLE_CLIENT_SECRET="your_google_oauth_secret"openssl rand -base64 32
# or
npx auth secretnpm run dev
# or
bun run dev- Authentication: NextAuth v5
 - Database: MongoDB + Mongoose ODM
 - Frontend: React 19 + TypeScript
 - Forms: Formik + Yup validation
 - Styling: Tailwind CSS
 - Security: BcryptJS password hashing
 
├── app/
│   ├── api/auth/[...nextauth]/route.ts
│   └── (auth)/
├── components/
│   └── Auth/
├── models/
│   └── User.ts
├── lib/
│   └── mongoose.ts
└── types/
    └── next-auth.d.ts
- Create a free cluster at MongoDB Atlas.
 - Get your connection string:
 
MONGODB_URI="mongodb+srv://<user>:<password>@cluster.mongodb.net/dbname?retryWrites=true&w=majority"- Go to Google Cloud Console.
 - Create OAuth 2.0 credentials.
 - Add the authorized redirect URI:
 
http://localhost:3000/api/auth/callback/google
import { Schema, model } from 'mongoose';
const UserSchema = new Schema({
  name: { type: String },
  email: { type: String, unique: true },
  password: { type: String, select: false },
  role: { type: String, enum: ['user', 'admin'], default: 'user' },
  emailVerified: { type: Date, default: null },
}, { timestamps: true });
export const User = model('User', UserSchema);- Password hashing with bcryptjs
 - CSRF protection
 - HTTPS-only cookies
 - Secure session management
 - Environment variable validation
 - Type-safe API routes
 
- Set environment variables in project settings.
 - Add the build command: 
npm run build. - Enable Serverless Functions.
 
# netlify.toml
[build]
  command = "npm run build"
  publish = ".next"- Customize the sign-in page in 
app/(auth)/login/page.tsx. - Add more OAuth providers in 
[...nextauth]/route.ts. - Extend the User model with additional fields.
 - Use 
getServerSession()for server-side authentication. - Implement rate limiting for authentication endpoints.
 
Keywords: Next.js Authentication, MongoDB Auth, NextAuth v5 Tutorial, React 19 Starter, TypeScript Auth Template, Mongoose User Model, Google OAuth Integration, Secure Login System