michaelshimeles/nextjs-starter-kit

The Ulimate Nextjs Starter Kit. Build your next SAAS product of your dreams. Batteries included.

TypeScript

3,047

3 commits

updated Dec 14, 2025

See the code

README

Next.js SaaS Starter Kit 2.0

A comprehensive, production-ready SaaS starter kit built with Next.js 15, featuring authentication, subscriptions, AI integration, and modern UI components.

✨ Features

πŸ” Authentication & User Management

  • Better Auth v1.2.8 - Modern authentication system
  • Google OAuth integration
  • Session management with database persistence
  • User profile management with image uploads
  • Account linking for multiple providers

πŸ’³ Subscription & Billing

  • Polar.sh integration for subscription management
  • Two-tier pricing: Starter ($99/month) & Professional ($499/month)
  • Real-time webhook processing
  • Customer portal for self-service billing
  • Subscription status tracking (active, canceled, expired)
  • Payment gating with elegant overlays

πŸ€– AI Integration

  • OpenAI powered chatbot
  • React Markdown rendering for rich responses
  • Multi-step conversation support
  • Integrated chat widget in dashboard

🎨 Modern UI/UX

  • Tailwind CSS v4 - Latest utility-first styling
  • shadcn/ui components - Accessible, customizable
  • Radix UI primitives - Unstyled, accessible components
  • Dark/light theme support with smooth transitions
  • Responsive design with mobile-first approach
  • Loading skeletons and optimistic UI updates

πŸ—„οΈ Database & Storage

  • Neon PostgreSQL - Serverless database
  • Drizzle ORM - Type-safe database toolkit
  • Cloudflare R2 - Scalable file storage with zero egress fees
  • Database migrations with Drizzle Kit
  • Drag & drop file uploads with progress tracking

πŸ“Š Analytics & Monitoring

  • PostHog integration for product analytics
  • User behavior tracking
  • Custom event monitoring
  • Error tracking and insights

πŸš€ Tech Stack

  • Framework: Next.js 15.3.1 with App Router
  • Language: TypeScript with strict mode
  • Styling: Tailwind CSS v4 + shadcn/ui
  • Database: Neon PostgreSQL + Drizzle ORM
  • Authentication: Better Auth v1.2.8
  • Payments: Polar.sh
  • AI: OpenAI SDK
  • Storage: Cloudflare R2
  • Analytics: PostHog
  • Deployment: Vercel (recommended)

πŸ“ Project Structure

β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (auth)/              # Authentication pages
β”‚   β”œβ”€β”€ dashboard/           # Protected dashboard area
β”‚   β”‚   β”œβ”€β”€ _components/     # Dashboard components
β”‚   β”‚   β”œβ”€β”€ chat/           # AI chat interface
β”‚   β”‚   β”œβ”€β”€ upload/         # File upload with R2
β”‚   β”‚   β”œβ”€β”€ payment/        # Subscription management
β”‚   β”‚   └── settings/       # User settings & billing
β”‚   β”œβ”€β”€ pricing/            # Public pricing page
β”‚   └── api/                # API routes
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                 # shadcn/ui components
β”‚   └── homepage/           # Landing page sections
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ auth/              # Authentication config
β”‚   β”œβ”€β”€ subscription.ts    # Subscription utilities
β”‚   └── upload-image.ts    # R2 file upload utilities
└── db/
    β”œβ”€β”€ schema.ts          # Database schema
    └── drizzle.ts         # Database connection

πŸ› οΈ Quick Start

Prerequisites

  • Node.js 18+
  • PostgreSQL database (Neon recommended)
  • Cloudflare R2 bucket for file storage
  • Polar.sh account for subscriptions
  • OpenAI API key for AI features
  • Google OAuth credentials (optional)

Installation

  1. Clone the repository
git clone <repository-url>
cd next-starter-2.0
  1. Install dependencies
npm install
  1. Environment Setup Create a .env.local file with:
# Database
DATABASE_URL="your-neon-database-url"

# Authentication
BETTER_AUTH_SECRET="your-secret-key"
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"

# Polar.sh
POLAR_ACCESS_TOKEN="your-polar-access-token"
POLAR_WEBHOOK_SECRET="your-webhook-secret"

# OpenAI
OPENAI_API_KEY="your-openai-api-key"

# Cloudflare R2 Storage
CLOUDFLARE_ACCOUNT_ID="your-cloudflare-account-id"
R2_UPLOAD_IMAGE_ACCESS_KEY_ID="your-r2-access-key-id"
R2_UPLOAD_IMAGE_SECRET_ACCESS_KEY="your-r2-secret-access-key"
R2_UPLOAD_IMAGE_BUCKET_NAME="your-r2-bucket-name"

# Polar.sh Pricing Tiers
NEXT_PUBLIC_STARTER_TIER="your-starter-product-id"
NEXT_PUBLIC_STARTER_SLUG="your-starter-slug"
  1. Database Setup
# Generate and run migrations
npx drizzle-kit generate
npx drizzle-kit push
  1. Cloudflare R2 Setup
  • Create a Cloudflare account and set up R2 storage
  • Create a bucket for file uploads
  • Generate API tokens with R2 permissions
  • Configure CORS settings for your domain
  1. Polar.sh Setup
  • Create products for your pricing tiers
  • Set up webhook endpoints for subscription events
  • Configure your pricing structure
  1. Start Development Server
npm run dev

Open http://localhost:3000 to see your application.

🎯 Key Features Explained

Subscription Management

  • Automatic subscription status checking
  • Payment gating for premium features
  • Integration with Polar.sh customer portal
  • Webhook handling for real-time updates

AI Chat Integration

  • Built-in chatbot with OpenAI
  • Markdown rendering for rich responses
  • Conversation history and context

File Upload System

  • Cloudflare R2 integration with S3-compatible API
  • Drag & drop interface with visual feedback
  • File validation - Type checking and size limits
  • Progress tracking - Real-time upload progress
  • Image gallery - View uploaded files with metadata
  • Copy URLs - Easy sharing and integration

Analytics & Tracking

  • PostHog event tracking
  • User behavior monitoring
  • Custom analytics dashboard

πŸ”§ Customization

Adding New Features

  1. Create components in components/
  2. Add API routes in app/api/
  3. Update database schema in db/schema.ts
  4. Run npx drizzle-kit generate and npx drizzle-kit push

Styling

  • Modify app/globals.css for global styles
  • Use Tailwind classes for component styling
  • Customize theme in tailwind.config.ts

Authentication

  • Configure providers in lib/auth/auth.ts
  • Add new OAuth providers as needed
  • Customize user profile fields in database schema

πŸ“š Learn More

πŸš€ Deployment

  1. Connect your GitHub repository to Vercel
  2. Add environment variables in Vercel dashboard
  3. Deploy automatically on every push

Manual Deployment

npm run build
npm start

πŸ“„ License

This project is licensed under the MIT License.

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


Built with ❀️ using Next.js and modern web technologies.

nextjs
nextjs15
nextjs-boilerplate
nextjs-starter-kit
nextjs-starter-saas
starter-kit

michaelshimeles/nextjs-starter-kit

The Ulimate Nextjs Starter Kit. Build your next SAAS product of your dreams. Batteries included.

TypeScript

3,047

3 commits

updated Dec 14, 2025

See the code

README

Next.js SaaS Starter Kit 2.0

A comprehensive, production-ready SaaS starter kit built with Next.js 15, featuring authentication, subscriptions, AI integration, and modern UI components.

✨ Features

πŸ” Authentication & User Management

  • Better Auth v1.2.8 - Modern authentication system
  • Google OAuth integration
  • Session management with database persistence
  • User profile management with image uploads
  • Account linking for multiple providers

πŸ’³ Subscription & Billing

  • Polar.sh integration for subscription management
  • Two-tier pricing: Starter ($99/month) & Professional ($499/month)
  • Real-time webhook processing
  • Customer portal for self-service billing
  • Subscription status tracking (active, canceled, expired)
  • Payment gating with elegant overlays

πŸ€– AI Integration

  • OpenAI powered chatbot
  • React Markdown rendering for rich responses
  • Multi-step conversation support
  • Integrated chat widget in dashboard

🎨 Modern UI/UX

  • Tailwind CSS v4 - Latest utility-first styling
  • shadcn/ui components - Accessible, customizable
  • Radix UI primitives - Unstyled, accessible components
  • Dark/light theme support with smooth transitions
  • Responsive design with mobile-first approach
  • Loading skeletons and optimistic UI updates

πŸ—„οΈ Database & Storage

  • Neon PostgreSQL - Serverless database
  • Drizzle ORM - Type-safe database toolkit
  • Cloudflare R2 - Scalable file storage with zero egress fees
  • Database migrations with Drizzle Kit
  • Drag & drop file uploads with progress tracking

πŸ“Š Analytics & Monitoring

  • PostHog integration for product analytics
  • User behavior tracking
  • Custom event monitoring
  • Error tracking and insights

πŸš€ Tech Stack

  • Framework: Next.js 15.3.1 with App Router
  • Language: TypeScript with strict mode
  • Styling: Tailwind CSS v4 + shadcn/ui
  • Database: Neon PostgreSQL + Drizzle ORM
  • Authentication: Better Auth v1.2.8
  • Payments: Polar.sh
  • AI: OpenAI SDK
  • Storage: Cloudflare R2
  • Analytics: PostHog
  • Deployment: Vercel (recommended)

πŸ“ Project Structure

β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (auth)/              # Authentication pages
β”‚   β”œβ”€β”€ dashboard/           # Protected dashboard area
β”‚   β”‚   β”œβ”€β”€ _components/     # Dashboard components
β”‚   β”‚   β”œβ”€β”€ chat/           # AI chat interface
β”‚   β”‚   β”œβ”€β”€ upload/         # File upload with R2
β”‚   β”‚   β”œβ”€β”€ payment/        # Subscription management
β”‚   β”‚   └── settings/       # User settings & billing
β”‚   β”œβ”€β”€ pricing/            # Public pricing page
β”‚   └── api/                # API routes
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                 # shadcn/ui components
β”‚   └── homepage/           # Landing page sections
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ auth/              # Authentication config
β”‚   β”œβ”€β”€ subscription.ts    # Subscription utilities
β”‚   └── upload-image.ts    # R2 file upload utilities
└── db/
    β”œβ”€β”€ schema.ts          # Database schema
    └── drizzle.ts         # Database connection

πŸ› οΈ Quick Start

Prerequisites

  • Node.js 18+
  • PostgreSQL database (Neon recommended)
  • Cloudflare R2 bucket for file storage
  • Polar.sh account for subscriptions
  • OpenAI API key for AI features
  • Google OAuth credentials (optional)

Installation

  1. Clone the repository
git clone <repository-url>
cd next-starter-2.0
  1. Install dependencies
npm install
  1. Environment Setup Create a .env.local file with:
# Database
DATABASE_URL="your-neon-database-url"

# Authentication
BETTER_AUTH_SECRET="your-secret-key"
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"

# Polar.sh
POLAR_ACCESS_TOKEN="your-polar-access-token"
POLAR_WEBHOOK_SECRET="your-webhook-secret"

# OpenAI
OPENAI_API_KEY="your-openai-api-key"

# Cloudflare R2 Storage
CLOUDFLARE_ACCOUNT_ID="your-cloudflare-account-id"
R2_UPLOAD_IMAGE_ACCESS_KEY_ID="your-r2-access-key-id"
R2_UPLOAD_IMAGE_SECRET_ACCESS_KEY="your-r2-secret-access-key"
R2_UPLOAD_IMAGE_BUCKET_NAME="your-r2-bucket-name"

# Polar.sh Pricing Tiers
NEXT_PUBLIC_STARTER_TIER="your-starter-product-id"
NEXT_PUBLIC_STARTER_SLUG="your-starter-slug"
  1. Database Setup
# Generate and run migrations
npx drizzle-kit generate
npx drizzle-kit push
  1. Cloudflare R2 Setup
  • Create a Cloudflare account and set up R2 storage
  • Create a bucket for file uploads
  • Generate API tokens with R2 permissions
  • Configure CORS settings for your domain
  1. Polar.sh Setup
  • Create products for your pricing tiers
  • Set up webhook endpoints for subscription events
  • Configure your pricing structure
  1. Start Development Server
npm run dev

Open http://localhost:3000 to see your application.

🎯 Key Features Explained

Subscription Management

  • Automatic subscription status checking
  • Payment gating for premium features
  • Integration with Polar.sh customer portal
  • Webhook handling for real-time updates

AI Chat Integration

  • Built-in chatbot with OpenAI
  • Markdown rendering for rich responses
  • Conversation history and context

File Upload System

  • Cloudflare R2 integration with S3-compatible API
  • Drag & drop interface with visual feedback
  • File validation - Type checking and size limits
  • Progress tracking - Real-time upload progress
  • Image gallery - View uploaded files with metadata
  • Copy URLs - Easy sharing and integration

Analytics & Tracking

  • PostHog event tracking
  • User behavior monitoring
  • Custom analytics dashboard

πŸ”§ Customization

Adding New Features

  1. Create components in components/
  2. Add API routes in app/api/
  3. Update database schema in db/schema.ts
  4. Run npx drizzle-kit generate and npx drizzle-kit push

Styling

  • Modify app/globals.css for global styles
  • Use Tailwind classes for component styling
  • Customize theme in tailwind.config.ts

Authentication

  • Configure providers in lib/auth/auth.ts
  • Add new OAuth providers as needed
  • Customize user profile fields in database schema

πŸ“š Learn More

πŸš€ Deployment

  1. Connect your GitHub repository to Vercel
  2. Add environment variables in Vercel dashboard
  3. Deploy automatically on every push

Manual Deployment

npm run build
npm start

πŸ“„ License

This project is licensed under the MIT License.

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


Built with ❀️ using Next.js and modern web technologies.

nextjs
nextjs15
nextjs-boilerplate
nextjs-starter-kit
nextjs-starter-saas
starter-kit

Significant stargazers

Weston Platter

175 followers Β· starred Jun 2025

Liu Xiaopai

807 followers Β· starred Mar 2025

Mike Wickett

39 followers Β· starred Oct 2024

Sid

90 followers Β· starred Oct 2025