Environment Variables Complete reference of all environment variables used by Jose Madrid Salsa
Jose Madrid Salsa uses environment variables for all secrets, API keys, and runtime configuration. Variables prefixed with NEXT_PUBLIC_ are exposed to the browser; all others are server-only.
Never commit .env files to version control. Use .env.example as a reference template and configure real values in Vercel or your local .env.local file.
Variable Required Description DATABASE_URLYes Primary PostgreSQL connection string (pooled). Falls back to PRISMA_DATABASE_URL then POSTGRES_URL if unset. DATABASE_URL_UNPOOLEDRecommended Direct (non-pooled) connection for migrations. Used by Prisma directUrl. PRISMA_DATABASE_URLNo Alias fallback for DATABASE_URL. POSTGRES_URLNo Second fallback for DATABASE_URL. Vercel Postgres integration sets this automatically.
DATABASE_URL = "prisma+postgres://accelerate.prisma-data.net/?api_key=..."
DATABASE_URL_UNPOOLED = "postgresql://user:pass@ep-xxx.us-east-2.aws.neon.tech/josemadridsalsa?sslmode=require"
Variable Required Description NEXTAUTH_URLProduction Canonical URL of the site. Auto-detected on Vercel in most cases. NEXTAUTH_SECRETYes Secret used to sign JWT tokens. Generate with openssl rand -base64 32.
Variable Required Description GOOGLE_CLIENT_IDFor Google login Google OAuth 2.0 client ID GOOGLE_CLIENT_SECRETFor Google login Google OAuth 2.0 client secret GITHUB_CLIENT_IDFor GitHub login GitHub OAuth App client ID GITHUB_CLIENT_SECRETFor GitHub login GitHub OAuth App client secret FACEBOOK_CLIENT_IDFor Facebook login Facebook App ID FACEBOOK_CLIENT_SECRETFor Facebook login Facebook App secret APPLE_CLIENT_IDFor Apple login Apple Services ID APPLE_CLIENT_SECRETFor Apple login Apple client secret (JWT)
Variable Required Description MASTER_KEYYes 64-character hex string (32 bytes) for AES-256-GCM encryption of service keys. Generate with node -e "console.log(require('crypto').randomBytes(32).toString('hex'))". ENCRYPTION_KEYYes Base64-encoded key for SMTP password encryption. Generate with node -e "console.log(require('crypto').randomBytes(64).toString('base64'))".
Variable Required Description STRIPE_SECRET_KEYYes Stripe secret key (sk_test_... or sk_live_...) STRIPE_PUBLISHABLE_KEYYes Stripe publishable key for client-side (pk_test_...) STRIPE_WEBHOOK_SECRETYes Webhook signing secret (whsec_...)
Variable Required Description RESEND_API_KEYYes Resend API key (re_...) FROM_EMAILNo Default sender address. Defaults to orders@josemadridsalsa.com.
Variable Required Description NEXT_PUBLIC_GOOGLE_MAPS_API_KEYYes Google Maps JavaScript API key (client-side) GOOGLE_PLACES_API_KEYFor reviews Google Places API key (server-side) NEXT_PUBLIC_GOOGLE_PLACE_IDNo Google Place ID for map accuracy GOOGLE_PLACE_IDNo Server-side Google Place ID GOOGLE_PLACE_NAMENo Business name fallback. Defaults to "Jose Madrid Salsa". NEXT_PUBLIC_GOOGLE_STREETVIEW_PANONo Specific Street View panorama ID GOOGLE_SERVICE_ACCOUNT_EMAILFor calendar Service account email GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEYFor calendar Service account private key (include \n for newlines) GOOGLE_CALENDAR_IDFor schedule Calendar ID for "Where is Jose"
Variable Required Description UPLOADTHING_SECRETFor uploads UploadThing secret key UPLOADTHING_APP_IDFor uploads UploadThing application ID
Variable Required Description GOOGLE_ANALYTICS_IDNo Google Analytics measurement ID (G-XXXXXXXXXX) NEXT_PUBLIC_AMPLITUDE_API_KEYNo Amplitude analytics API key
Variable Required Description SHIPPING_PROVIDERNo Shipping rate provider: easypost or shippo SHIPPING_API_KEYFor rates Shipping provider API key SHIPPING_TEST_MODENo Set to "false" for production SHIPPING_ORIGIN_ADDRESSFor rates Origin street address SHIPPING_ORIGIN_CITYFor rates Origin city SHIPPING_ORIGIN_STATEFor rates Origin state (2-letter code) SHIPPING_ORIGIN_ZIPFor rates Origin ZIP code
Variable Required Description SENTRY_ORGFor Sentry Sentry organization slug SENTRY_PROJECTFor Sentry Sentry project slug SENTRY_AUTH_TOKENFor Sentry Sentry auth token for source map uploads
Variable Required Description ANTHROPIC_API_KEYFor AI chat Anthropic API key for Claude
Variable Required Description SERVICE_API_KEYNo Shared secret for internal service-to-service API calls NEXT_PUBLIC_BASE_URLNo Public-facing base URL. Defaults to https://josemadrid.net.