Overview

aSaaSin uses several external services that require configuration via environment variables. These variables are stored in a .env.local file at the root of your project.

Environment variables are not committed to Git. Each developer must set them individually.

Create .env

# Create a copy of the example file
cp .env.example .env

The .env.example file contains all required variables as empty keys. After copying, replace them with your own project-specific values.

# General
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_MAINTENANCE_MODE=false

# Google Analytics
NEXT_PUBLIC_GA_ID=

# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=

# Tina CMS
NEXT_PUBLIC_TINA_CLIENT_ID=
TINA_TOKEN=
TINA_SEARCH_TOKEN=

# Resend
RESEND_API_KEY=
RESEND_AUDIENCE_ID=
RESEND_NOTIFICATION_EMAIL=

# Lemon Squeezy
LEMON_SQUEEZY_API_KEY=
LEMON_SQUEEZY_STORE_ID=
LEMON_SQUEEZY_WEBHOOK_SECRET=
LEMON_SQUEEZY_VARIANT_ID_STARTER=
LEMON_SQUEEZY_VARIANT_ID_ULTIMATE=

# OpenAI
OPENAI_API_KEY=

Variable reference

General

  • NEXT_PUBLIC_APP_URL → Base URL of your app (local or production).
  • NEXT_PUBLIC_MAINTENANCE_MODE → Toggle maintenance mode (true / false).

Google Analytics

  • NEXT_PUBLIC_GA_ID → Google Analytics measurement ID (optional).

Supabase

  • NEXT_PUBLIC_SUPABASE_URL → Project API URL from Supabase dashboard.
  • NEXT_PUBLIC_SUPABASE_ANON_KEY → Public anon key from Supabase project settings.
  • SUPABASE_SERVICE_ROLE_KEY → Service role key (server-side only).

TinaCMS

  • NEXT_PUBLIC_TINA_CLIENT_ID → Client ID from Tina Cloud project.
  • TINA_TOKEN → API token for content editing.
  • TINA_SEARCH_TOKEN → Token for Tina search.

Resend

  • RESEND_API_KEY → API key from Resend dashboard.
  • RESEND_AUDIENCE_ID → Audience list ID for newsletters.
  • RESEND_NOTIFICATION_EMAIL → Default sender email for notifications.

Lemon Squeezy

  • LEMON_SQUEEZY_API_KEY → API key from Lemon Squeezy dashboard.
  • LEMON_SQUEEZY_STORE_ID → Store ID from your account.
  • LEMON_SQUEEZY_WEBHOOK_SECRET → Secret for validating webhooks.
  • LEMON_SQUEEZY_VARIANT_ID_STARTER → Variant ID for the Starter plan.
  • LEMON_SQUEEZY_VARIANT_ID_ULTIMATE → Variant ID for the Ultimate plan.

OpenAI

  • OPENAI_API_KEY → API key for AI features (branding, color palettes, etc.).