
How to set up
How to build your AI SaaS with MkSaaS template
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 |
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 |
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 |
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: