Welcome to the Jose Madrid Salsa developer docs — explore features, APIs, and deployment guides.
Jose Madrid SalsaJMS Docs

Environment Variables

Complete reference of all environment variables used by Jose Madrid Salsa

Environment Variables

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.

Database

VariableRequiredDescription
DATABASE_URLYesPrimary PostgreSQL connection string (pooled). Falls back to PRISMA_DATABASE_URL then POSTGRES_URL if unset.
DATABASE_URL_UNPOOLEDRecommendedDirect (non-pooled) connection for migrations. Used by Prisma directUrl.
PRISMA_DATABASE_URLNoAlias fallback for DATABASE_URL.
POSTGRES_URLNoSecond fallback for DATABASE_URL. Vercel Postgres integration sets this automatically.
.env.local
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"

Authentication

VariableRequiredDescription
NEXTAUTH_URLProductionCanonical URL of the site. Auto-detected on Vercel in most cases.
NEXTAUTH_SECRETYesSecret used to sign JWT tokens. Generate with openssl rand -base64 32.

OAuth Providers

VariableRequiredDescription
GOOGLE_CLIENT_IDFor Google loginGoogle OAuth 2.0 client ID
GOOGLE_CLIENT_SECRETFor Google loginGoogle OAuth 2.0 client secret
GITHUB_CLIENT_IDFor GitHub loginGitHub OAuth App client ID
GITHUB_CLIENT_SECRETFor GitHub loginGitHub OAuth App client secret
FACEBOOK_CLIENT_IDFor Facebook loginFacebook App ID
FACEBOOK_CLIENT_SECRETFor Facebook loginFacebook App secret
APPLE_CLIENT_IDFor Apple loginApple Services ID
APPLE_CLIENT_SECRETFor Apple loginApple client secret (JWT)

Encryption

VariableRequiredDescription
MASTER_KEYYes64-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_KEYYesBase64-encoded key for SMTP password encryption. Generate with node -e "console.log(require('crypto').randomBytes(64).toString('base64'))".

Stripe Payments

VariableRequiredDescription
STRIPE_SECRET_KEYYesStripe secret key (sk_test_... or sk_live_...)
STRIPE_PUBLISHABLE_KEYYesStripe publishable key for client-side (pk_test_...)
STRIPE_WEBHOOK_SECRETYesWebhook signing secret (whsec_...)

Email (Resend)

VariableRequiredDescription
RESEND_API_KEYYesResend API key (re_...)
FROM_EMAILNoDefault sender address. Defaults to orders@josemadridsalsa.com.

Google Services

VariableRequiredDescription
NEXT_PUBLIC_GOOGLE_MAPS_API_KEYYesGoogle Maps JavaScript API key (client-side)
GOOGLE_PLACES_API_KEYFor reviewsGoogle Places API key (server-side)
NEXT_PUBLIC_GOOGLE_PLACE_IDNoGoogle Place ID for map accuracy
GOOGLE_PLACE_IDNoServer-side Google Place ID
GOOGLE_PLACE_NAMENoBusiness name fallback. Defaults to "Jose Madrid Salsa".
NEXT_PUBLIC_GOOGLE_STREETVIEW_PANONoSpecific Street View panorama ID
GOOGLE_SERVICE_ACCOUNT_EMAILFor calendarService account email
GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEYFor calendarService account private key (include \n for newlines)
GOOGLE_CALENDAR_IDFor scheduleCalendar ID for "Where is Jose"

File Uploads

VariableRequiredDescription
UPLOADTHING_SECRETFor uploadsUploadThing secret key
UPLOADTHING_APP_IDFor uploadsUploadThing application ID

Analytics

VariableRequiredDescription
GOOGLE_ANALYTICS_IDNoGoogle Analytics measurement ID (G-XXXXXXXXXX)
NEXT_PUBLIC_AMPLITUDE_API_KEYNoAmplitude analytics API key

Shipping

VariableRequiredDescription
SHIPPING_PROVIDERNoShipping rate provider: easypost or shippo
SHIPPING_API_KEYFor ratesShipping provider API key
SHIPPING_TEST_MODENoSet to "false" for production
SHIPPING_ORIGIN_ADDRESSFor ratesOrigin street address
SHIPPING_ORIGIN_CITYFor ratesOrigin city
SHIPPING_ORIGIN_STATEFor ratesOrigin state (2-letter code)
SHIPPING_ORIGIN_ZIPFor ratesOrigin ZIP code

Monitoring

VariableRequiredDescription
SENTRY_ORGFor SentrySentry organization slug
SENTRY_PROJECTFor SentrySentry project slug
SENTRY_AUTH_TOKENFor SentrySentry auth token for source map uploads

AI

VariableRequiredDescription
ANTHROPIC_API_KEYFor AI chatAnthropic API key for Claude

Internal

VariableRequiredDescription
SERVICE_API_KEYNoShared secret for internal service-to-service API calls
NEXT_PUBLIC_BASE_URLNoPublic-facing base URL. Defaults to https://josemadrid.net.

How is this guide?

Edit on GitHub

Last updated on

On this page