A comprehensive, production-ready SaaS starter kit built with Next.js 15, featuring authentication, subscriptions, AI integration, and modern UI components.
- 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
- 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
- OpenAI powered chatbot
- React Markdown rendering for rich responses
- Multi-step conversation support
- Integrated chat widget in dashboard
- 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
- 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
- PostHog integration for product analytics
- User behavior tracking
- Custom event monitoring
- Error tracking and insights
- 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)
βββ 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
- 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)
- Clone the repository
git clone <repository-url>
cd next-starter-2.0
- Install dependencies
npm install
- 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"
- Database Setup
# Generate and run migrations
npx drizzle-kit generate
npx drizzle-kit push
- 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
- Polar.sh Setup
- Create products for your pricing tiers
- Set up webhook endpoints for subscription events
- Configure your pricing structure
- Start Development Server
npm run dev
Open http://localhost:3000 to see your application.
- Automatic subscription status checking
- Payment gating for premium features
- Integration with Polar.sh customer portal
- Webhook handling for real-time updates
- Built-in chatbot with OpenAI
- Markdown rendering for rich responses
- Conversation history and context
- 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
- PostHog event tracking
- User behavior monitoring
- Custom analytics dashboard
- Create components in
components/
- Add API routes in
app/api/
- Update database schema in
db/schema.ts
- Run
npx drizzle-kit generate
andnpx drizzle-kit push
- Modify
app/globals.css
for global styles - Use Tailwind classes for component styling
- Customize theme in
tailwind.config.ts
- Configure providers in
lib/auth/auth.ts
- Add new OAuth providers as needed
- Customize user profile fields in database schema
- Next.js Documentation
- Better Auth Documentation
- Polar.sh Documentation
- Drizzle ORM Documentation
- Tailwind CSS Documentation
- Connect your GitHub repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically on every push
npm run build
npm start
This project is licensed under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
Built with β€οΈ using Next.js and modern web technologies.