Skip to content
Back to Templates

MongoDB Atlas Forum

A modern full-stack React template with Next.js, MongoDB, and Better Auth. Ships with a Hacker News-style forum and authentication.

MongoDB News Thumbnail

-> View demo: news.mongodb.com

Next.js with MongoDB and Better Auth

A modern full-stack template for building React applications using Next.js, MongoDB, and Better Auth for authentication. Features a Hacker News-style post submission and voting system with optimistic updates, server actions, and email/password authentication.

Features

  • 🔐 Authentication: Email/password authentication with Better Auth
  • 📝 Post System: Hacker News-style post submission and voting
  • ⚡ Optimistic Updates: Real-time UI updates with React's useOptimistic
  • 🎨 Modern UI: Built with shadcn/ui and Tailwind CSS
  • 📱 Responsive Design: Mobile-first design with dark mode support
  • 🗄️ MongoDB Integration: Native MongoDB driver with optimized queries
  • 🔄 Server Actions: Form handling without client-side API calls
  • 📊 Real-time Status: Database connection monitoring
  • 🚀 Production Ready: TypeScript, ESLint, and Vercel deployment optimized

Getting Started

Click the "Deploy" button to clone this repo, create a new Vercel project, setup the MongoDB integration, and provision a new MongoDB database:

Local Setup

Installation

Install the dependencies:

npm install

Development

Create a .env file in the project root
cp .env.example .env
Configure environment variables

Update the .env file with your configuration:

# MongoDB connection string from Atlas Dashboard
MONGODB_URI=mongodb+srv://<username>:<password>@<cluster-url>/<database>?retryWrites=true&w=majority
MONGODB_DB=better-auth
# Better Auth configuration
BETTER_AUTH_URL=http://localhost:3000
BETTER_AUTH_SECRET=your-secure-secret-key-here-minimum-32-characters
Setup database indexes (optional for production)
npm run setup-indexes
Start the development server
npm run dev

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

Tech Stack

Project Structure

├── app/ # Next.js App Router
│ ├── api/auth/ # Better Auth API routes
│ ├── login/ # Login page
│ ├── signup/ # Signup page
│ └── page.tsx # Home page
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ ├── PostItem.tsx # Individual post with voting
│ ├── PostListServer.tsx # Server-side post list
│ ├── PostSection.tsx # Post section wrapper
│ └── ... # Other components
├── lib/ # Core utilities
│ ├── auth.ts # Better Auth configuration
│ ├── auth-client.ts # Client-side auth methods
│ ├── mongodb.ts # Database connection
│ ├── posts.ts # Post data functions
│ ├── actions.ts # Server actions
│ └── schemas.ts # Zod validation schemas
└── scripts/ # Utility scripts
└── setup-indexes.mjs # Database index setup

Key Features Explained

Authentication System

  • Email/Password: Secure login with email and password
  • Form Validation: Password requirements and email validation
  • Session Management: Secure session handling with MongoDB storage
  • User Profiles: User account management with Better Auth

Post Management

  • Real-time Voting: Optimistic UI updates using React's useOptimistic
  • Server Actions: Form submissions without client-side API calls
  • Caching: Strategic caching with Next.js unstable_cache and revalidation
  • Pagination: URL-based pagination with smooth navigation

Modern React Patterns

  • Server Components: SEO-friendly server-side rendering
  • Client Components: Interactive elements with proper hydration boundaries
  • Suspense: Loading states for better user experience
  • Form Validation: Type-safe forms with React Hook Form and Zod

Learn More

To learn more about the technologies used in this template:

Deploy on Vercel

Commit and push your code changes to your GitHub repository to automatically trigger a new deployment.