Environment Setup
Configure environment variables for your MkSaaS application
MkSaaS requires several environment variables to function properly, and this guide explains how to set them up.
Create a .env
file in the root directory of your project, and never commit it to version control.
You can copy the example file as a starting point:
cp env.example .env
Environment Variables
Core Configuration
Variable | Description |
---|---|
NEXT_PUBLIC_BASE_URL | The public URL of your site, e.g. http://localhost:3000 for development, https://yourdomain.com for production |
Database
Learn how to set up a database in the Database Setup guide.
Variable | Description |
---|---|
DATABASE_URL | Database connection URL |
Authentication
Learn how to set up authentication in the Authentication Setup guide.
Variable | Description |
---|---|
BETTER_AUTH_SECRET | A random string used to hash tokens and sign cookies |
GOOGLE_CLIENT_ID | Google OAuth client ID (optional) |
GOOGLE_CLIENT_SECRET | Google OAuth client secret (optional) |
GITHUB_CLIENT_ID | GitHub OAuth client ID (optional) |
GITHUB_CLIENT_SECRET | GitHub OAuth client secret (optional) |
Learn how to set up email in the Email Setup guide.
Variable | Description |
---|---|
RESEND_API_KEY | API key for Resend email service |
Newsletter
Learn how to set up newsletter in the Newsletter Setup guide.
Variable | Description |
---|---|
RESEND_API_KEY | API key for Resend email service |
RESEND_AUDIENCE_ID | Audience ID for Resend broadcast service |
Storage
Learn how to set up storage in the Storage Setup guide.
Variable | Description |
---|---|
STORAGE_REGION | Region for the storage bucket |
STORAGE_BUCKET_NAME | Name of the storage bucket |
STORAGE_ACCESS_KEY_ID | Access key ID for the storage bucket |
STORAGE_SECRET_ACCESS_KEY | Secret access key for the storage bucket |
STORAGE_ENDPOINT | Endpoint for the storage bucket |
STORAGE_PUBLIC_URL | Public URL for the storage bucket |
Payment
Learn how to set up payments in the Payment Setup guide.
Variable | Description |
---|---|
STRIPE_SECRET_KEY | Stripe secret key |
STRIPE_WEBHOOK_SECRET | Stripe webhook signing secret |
NEXT_PUBLIC_STRIPE_PRICE_PRO_MONTHLY | Stripe price ID for your pro monthly subscription |
NEXT_PUBLIC_STRIPE_PRICE_PRO_YEARLY | Stripe price ID for your pro yearly subscription |
NEXT_PUBLIC_STRIPE_PRICE_LIFETIME | Stripe price ID for your lifetime subscription |
NEXT_PUBLIC_STRIPE_PRICE_CREDITS_BASIC | Stripe price ID for your basic credit package (optional) |
NEXT_PUBLIC_STRIPE_PRICE_CREDITS_STANDARD | Stripe price ID for your standard credit package (optional) |
NEXT_PUBLIC_STRIPE_PRICE_CREDITS_PREMIUM | Stripe price ID for your premium credit package (optional) |
NEXT_PUBLIC_STRIPE_PRICE_CREDITS_ENTERPRISE | Stripe price ID for your enterprise credit package (optional) |
Analytics
Learn how to set up analytics in the Analytics Setup guide.
Variable | Description |
---|---|
GOOGLE_ANALYTICS_ID | Google Analytics ID for analytics features |
UMAMI_WEBSITE_ID | Umami Analytics website ID for analytics features |
UMAMI_SCRIPT | Umami Analytics script URL for analytics features |
OPENPANEL_CLIENT_ID | OpenPanel Analytics client ID for analytics features |
PLAUSIBLE_DOMAIN | Plausible Analytics domain for analytics features |
PLAUSIBLE_SCRIPT | Plausible Analytics script URL for analytics features |
Seline_TOKEN | Seline Analytics token for analytics features |
DATAFAST_ANALYTICS_ID | DataFast Analytics ID for analytics features |
DATAFAST_ANALYTICS_DOMAIN | DataFast Analytics domain for analytics features |
Affiliates
Learn how to set up affiliates in the Affiliates Setup guide.
Variable | Description |
---|---|
NEXT_PUBLIC_AFFILIATE_AFFONSO_ID | Affonso affiliate ID |
NEXT_PUBLIC_AFFILIATE_PROMOTEKIT_ID | Promotekit affiliate ID |
AI Features
Learn how to set up AI features in the AI Setup guide.
Variable | Description |
---|---|
OPENAI_API_KEY | OpenAI API key for AI features |
GOOGLE_API_KEY | Google API key for AI features |
DEEPSEEK_API_KEY | DeepSeek API key for AI features |
Background Jobs
Learn how to set up background jobs in the Background Jobs Setup guide.
Variable | Description |
---|---|
INNGEST_SIGNING_KEY | Inngest signing key for scheduled jobs |
Notification
Learn how to set up notification in the Notification Setup guide.
Variable | Description |
---|---|
DISCORD_WEBHOOK_URL | Discord webhook URL for receiving notifications of successful payments |
FEISHU_WEBHOOK_URL | Feishu webhook URL for receiving notifications of successful payments |
Captcha
Learn how to set up captcha in the Captcha Setup guide.
Variable | Description |
---|---|
NEXT_PUBLIC_TURNSTILE_SITE_KEY | Turnstile site key |
TURNSTILE_SECRET_KEY | Turnstile secret key |
Other Configurations
Some other configurations are also available in the .env
file, you may need to set them up depending on your needs.
Variable | Description |
---|---|
DISABLE_IMAGE_OPTIMIZATION | Disable image optimization, if you deploy your website to Vercel, image optimization is enabled by default, and may cost you more money |
NEXT_PUBLIC_DEMO_WEBSITE | Run this website as demo website, I use this for MkSaaS demo website. In most cases, you should not set this or leave it to false |
Verifying Environment Variables
To verify that your environment variables are correctly set up, run:
pnpm run dev
npm run dev
yarn dev
bun run dev
If everything is configured correctly, your application should start and run normally without any environment-related errors.
Next Steps
Now that your environment is set up, explore these related topics: