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
| Variable | Required | Description |
|---|
NEXT_PUBLIC_SUPABASE_URL | ✅ | Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | ✅ | Supabase anon/public key |
SUPABASE_SERVICE_ROLE_KEY | ✅ | Supabase service role key |
NEXT_PUBLIC_SITE_URL | ✅ | Your app’s URL |
REPLICATE_API_TOKEN | ✅ | Replicate API token |
FAL_KEY | ⚪ | fal.ai fallback key |
STRIPE_SECRET_KEY | ⚪ | Stripe secret key |
STRIPE_WEBHOOK_SECRET | ⚪ | Stripe webhook signing secret |
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY | ⚪ | Stripe publishable key |
NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN | ⚪ | Shopify store domain |
NEXT_PUBLIC_SHOPIFY_STOREFRONT_TOKEN | ⚪ | Shopify Storefront API token |
HUBSPOT_API_KEY | ⚪ | HubSpot private app access token |
HUBSPOT_PORTAL_ID | ⚪ | HubSpot portal/account ID |
HUBSPOT_BETA_FORM_ID | ⚪ | HubSpot form ID for beta signups |
Vercel Deployment
When deploying to Vercel:
- Go to Project Settings → Environment Variables
- Add each variable for Production, Preview, and Development
- 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.