LogoBoring Template

Environment Setup

Configure environment variables and set up essential services for your application.

Service Configuration

This guide will help you set up all the necessary environment variables and external services required by The Boring Template.

Create Environment Variables

Create a .env.local file in your project root.

Keep your environment file secure and never commit it to version control.

You can generate a BETTER_AUTH_SECRET key here: Generate Secret Key

Environment Variables

.env.local
# Database (Neon.tech PostgreSQL)
DATABASE_URL=your_neon_database_url
 
# Email (Resend)
RESEND_API_KEY=your_resend_api_key
RESEND_EMAIL=your_verified_email
 
# Authentication (Google OAuth)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
 
# Github OAuth
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
 
# BetterAuth
BETTER_AUTH_URL=http://localhost:3000
BETTER_AUTH_SECRET=your_nextauth_secret
 
# File Storage (AWS S3)
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_REGION=your_aws_region
S3_UPLOAD_BUCKET=your_bucket_name
 
# Rate Limiting (Upstash Redis)
UPSTASH_REDIS_REST_URL=your_upstash_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_token
 
# Payments (Stripe)
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBGOOK=your_stripe_webhook_secret
STRIPE_STARTER_PRICE_ID=
STRIPE_PRO_PRICE_ID=
 
# App Encryption
ENCRYPTION_KEY=your_encryption_key
NEXT_PUBLIC_APP_URL=http://localhost:3000

Service Setup Guides

Database Setup (Neon.tech)

Neon.tech provides a serverless PostgreSQL database with a generous free tier.

  1. Go to Neon.tech and create an account
  2. Create a new project
  3. Once created, go to the "Connection Details" tab
  4. Copy the connection string
  5. Replace DATABASE_URL in your .env.local with the connection string

Email Setup (Resend)

Resend is a developer-friendly email API service built for sending transactional emails.

  1. Visit Resend and create an account
  2. Go to the API Keys section
  3. Generate a new API key
  4. Copy the API key and add it to RESEND_API_KEY in your .env.local
  5. Add your verified email address to RESEND_EMAIL

Make sure to verify your domain or email in Resend's dashboard before sending emails.

File Storage Setup (AWS S3)

  1. Create an AWS Account if you don't have one
  2. Go to AWS IAM and create a new user with S3 access
  3. Generate Access Key and Secret Key
  4. Create a new S3 bucket
  5. Configure your .env.local with AWS credentials and bucket details

Important

Make sure to configure CORS settings in your S3 bucket to allow uploads from your application domain.

Rate Limiting Setup (Upstash Redis)

  1. Go to Upstash and create an account
  2. Create a new Redis database
  3. Go to the "REST API" section
  4. Copy the UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN
  5. Add these values to your .env.local

Payment Setup (Stripe)

  1. Create a Stripe account
  2. Get your API keys from the Stripe Dashboard
  3. Create your products and price IDs
  4. Set up webhook endpoints
  5. Add the Stripe credentials to your .env.local

Authentication Setup (Google OAuth)

  1. Go to Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable the Google OAuth2 API
  4. Configure the OAuth consent screen
  5. Fill in the application details:
    • App name: Your application name
    • User support email: Your email address
    • Developer contact information: Your email address
    • Authorized domains: Add your domain (or localhost for development)
  6. Create OAuth 2.0 credentials (Web application type)
  7. Add authorized redirect URIs:
    • http://localhost:3000/api/auth/callback/google (for development)
    • https://your-domain.com/api/auth/callback/google (for production)
  8. Copy the Client ID and Client Secret
  9. Add them to your .env.local as:
    GOOGLE_CLIENT_ID=your_google_client_id
    GOOGLE_CLIENT_SECRET=your_google_client_secret

For production, make sure to verify your domain and add it to the authorized domains list.

Authentication Setup (GitHub OAuth)

  1. Go to GitHub Developer Settings
  2. Click on 'OAuth Apps' and then 'New OAuth App'
  3. Fill in the application details:
    • Application name: Your app name
    • Homepage URL: http://localhost:3000 (or your production URL)
    • Authorization callback URL: http://localhost:3000/api/auth/callback/github
  4. Click 'Register application'
  5. On the next screen, you'll see your Client ID
  6. Click 'Generate a new client secret' to create your Client Secret
  7. Copy the Client ID and Client Secret to your .env.local file
  8. Add them to your .env.local as:
    GITHUB_CLIENT_ID=your_github_client_id
    GITHUB_CLIENT_SECRET=your_github_client_secret

Make sure to keep your Client Secret secure and never expose it in client-side code.

Essential Services

The Boring Template relies on several external services to provide a complete SaaS solution:

ServiceDescription
🗄️ DatabasePostgreSQL database for storing application data
📧 Email ServiceTransactional email service for notifications
🔐 AuthenticationOAuth providers for secure user authentication
📁 File StorageS3-compatible storage for user uploads
⏱️ Rate LimitingRedis-based rate limiting for API protection
💳 PaymentsStripe integration for subscription management

Troubleshooting

Common Issues

If you encounter any issues with your environment setup, check these common solutions:

  • Ensure all environment variables are correctly set without any typos
  • Verify that your API keys have the correct permissions
  • Check that your OAuth redirect URIs exactly match your application URLs
  • Confirm that your database connection string includes all required parameters
  • For production, ensure all services are configured for your production domain