← back to NationalPaperHangers

.env.example

60 lines

PORT=9765
NODE_ENV=development
SESSION_SECRET=change-me-in-prod-32-bytes-min

# Postgres
# Local dev on macOS: use Unix socket (/tmp) so peer auth works without password.
# For TCP/remote, set PGHOST=hostname and PGPASSWORD=…
PGHOST=/tmp
PGPORT=5432
PGDATABASE=national_paper_hangers
PGUSER=stevestudio2
PGPASSWORD=

# Stripe (will be filled in via secrets-manager)
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_PRICE_PRO_MONTH=
STRIPE_PRICE_PRO_YEAR=
STRIPE_PRICE_SIGNATURE_MONTH=
STRIPE_PRICE_SIGNATURE_YEAR=
STRIPE_PRICE_ENTERPRISE_MONTH=

# George Gmail agent (info@nationalpaperhangers.com)
GEORGE_URL=http://localhost:9850
GEORGE_ACCOUNT=info
GEORGE_USER=admin
GEORGE_PASS=
EMAIL_FROM=info@nationalpaperhangers.com
EMAIL_FROM_NAME=National Paper Hangers

# Public origin (for emails / Stripe redirects)
PUBLIC_URL=http://localhost:9765

# Butlr — "Call this installer" calling concierge integration.
# BUTLR_API_URL: base URL of the Butlr service.
#   dev  → http://localhost:9932   prod → https://butlr.agentabrams.com
# BUTLR_EXTERNAL_SECRET: shared secret sent in the X-Butlr-External-Secret
#   header. MUST exactly match BUTLR_EXTERNAL_SECRET in Butlr's .env.
#   If unset, the "Call this installer" button is hidden site-wide.
BUTLR_API_URL=http://localhost:9932
BUTLR_EXTERNAL_SECRET=

# HMAC key for booking-view tokens. Falls back to SESSION_SECRET if unset;
# in production set explicitly so rotating SESSION_SECRET doesn't invalidate
# every outstanding booking link in customer inboxes.
BOOKING_SIGNING_SECRET=

# HMAC key for unsubscribe tokens. Falls back to SESSION_SECRET if unset.
UNSUBSCRIBE_SIGNING_SECRET=

# CAN-SPAM §7(a)(5) — physical postal address that appears in every commercial
# email footer. MUST be a real, deliverable address (not a P.O. Box unless USPS-registered).
# Format: "Studio Name, 123 Real Street, City, ST 12345"
# REQUIRED before any outbound campaign — assertSendCompliance() throws if missing.
MAILING_ADDRESS=

# Stripe webhook escape hatch — only honored in dev. Default fail-closed.
# Set to 1 ONLY in dev to accept unsigned webhook calls for local Stripe CLI testing.
STRIPE_DEV_ACCEPT_UNSIGNED=