Skip to main content

Environment Variables

Garmint uses environment variables for configuration. Create a .env.local file in your project root.

Required Variables

These must be set for the app to function:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

# Site URL (for OAuth callbacks)
NEXT_PUBLIC_SITE_URL=http://localhost:3000

AI Generation

Configure AI providers for image generation:
# Replicate (primary)
REPLICATE_API_TOKEN=r8_xxxxxxxxxxxxxxxxxx

# fal.ai (fallback)
FAL_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Model selection: Garmint uses google/nano-banana by default, with google/nano-banana-pro for higher quality generations (costs more tokens).

Stripe Billing

For subscriptions and production checkout:
# Stripe API
STRIPE_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxxxx
STRIPE_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxx
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxxxxxxxxx

# Stripe Product IDs
STRIPE_PRICE_ID_PRO=price_xxxxxxxxxxxxxxxxxx
STRIPE_PRICE_ID_STUDIO=price_xxxxxxxxxxxxxxxxxx
STRIPE_PRICE_ID_TOKENS_50=price_xxxxxxxxxxxxxxxxxx
STRIPE_PRICE_ID_TOKENS_200=price_xxxxxxxxxxxxxxxxxx

Shopify Integration

For fetching products/garments:
# Storefront API
NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN=yourstore.myshopify.com
NEXT_PUBLIC_SHOPIFY_STOREFRONT_TOKEN=shpat_xxxxxxxxxxxxxxxxxx
Shopify credentials are optional. Without them, the app uses mock garment data from lib/mockGarments.ts.

Image CDN

Configure your preferred image CDN:
# Uploadcare
NEXT_PUBLIC_UPLOADCARE_PUBLIC_KEY=xxxxxxxxxxxxxxxxxx

# OR ImageKit
NEXT_PUBLIC_IMAGEKIT_URL_ENDPOINT=https://ik.imagekit.io/yourcompany
IMAGEKIT_PRIVATE_KEY=xxxxxxxxxxxxxxxxxx

# OR Cloudinary
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=yourcompany
CLOUDINARY_API_KEY=xxxxxxxxxxxxxxxxxx
CLOUDINARY_API_SECRET=xxxxxxxxxxxxxxxxxx

Optional Variables

# Analytics
NEXT_PUBLIC_POSTHOG_KEY=phc_xxxxxxxxxxxxxxxxxx
NEXT_PUBLIC_POSTHOG_HOST=https://app.posthog.com

# Error tracking
SENTRY_DSN=https://xxxxxxxxxxxxxxxxxx@sentry.io/xxxxxxxxx

# Feature flags
NEXT_PUBLIC_ENABLE_COLLECTIONS=true
NEXT_PUBLIC_ENABLE_PRODUCTION=true

Development vs Production

Development (.env.local)

NEXT_PUBLIC_SITE_URL=http://localhost:3000
STRIPE_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxx
NODE_ENV=development

Production (Vercel Environment)

NEXT_PUBLIC_SITE_URL=https://yourapp.vercel.app
STRIPE_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxxxx
NODE_ENV=production

Variable Reference

VariableRequiredDescription
NEXT_PUBLIC_SUPABASE_URLSupabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEYSupabase anon/public key
SUPABASE_SERVICE_ROLE_KEYSupabase service role key
NEXT_PUBLIC_SITE_URLYour app’s URL
REPLICATE_API_TOKENReplicate API token
FAL_KEYfal.ai fallback key
STRIPE_SECRET_KEYStripe secret key
STRIPE_WEBHOOK_SECRETStripe webhook signing secret
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYStripe publishable key
NEXT_PUBLIC_SHOPIFY_STORE_DOMAINShopify store domain
NEXT_PUBLIC_SHOPIFY_STOREFRONT_TOKENShopify Storefront API token
HUBSPOT_API_KEYHubSpot private app access token
HUBSPOT_PORTAL_IDHubSpot portal/account ID
HUBSPOT_BETA_FORM_IDHubSpot form ID for beta signups

Vercel Deployment

When deploying to Vercel:
  1. Go to Project Settings → Environment Variables
  2. Add each variable for Production, Preview, and Development
  3. Redeploy to pick up new variables
# Or use Vercel CLI
vercel env add REPLICATE_API_TOKEN

Security Notes

Never commit .env.local to git. It’s already in .gitignore by default.
Service role key has admin access to Supabase. Only use in server-side code (/api routes).
Use NEXT_PUBLIC_ prefix only for variables that should be exposed to the browser. All others should be server-only.