Skip to content

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

looizinho/nextjs-mongodb

 
 

Repository files navigation

Next.js with MongoDB and Better Auth

-> View demo: mongodb-news-template-nextjs.vercel.app

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:

Deploy with Vercel

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.

About

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 91.6%
  • CSS 4.8%
  • JavaScript 3.6%