# ── Database ────────────────────────────────────────────────────────────────── DATABASE_URL="postgresql://storybid:storybid@localhost:5432/storybid" # ── Redis (optional – queues, rate limiting, Socket.io scaling) ─────────────── REDIS_URL="redis://localhost:6379" # ── App ─────────────────────────────────────────────────────────────────────── NODE_ENV=development PORT=3001 # Public FQDN used as first-choice endpoint; fall back to LOCAL_HOSTNAME PUBLIC_URL="https://bid.example.org" # Local DNS hostname on event Wi-Fi (UniFi local DNS record) LOCAL_HOSTNAME="auction.event.lan" JWT_SECRET="change-me-in-production" # ── Stripe ──────────────────────────────────────────────────────────────────── STRIPE_SECRET_KEY="sk_test_..." STRIPE_PUBLISHABLE_KEY="pk_test_..." STRIPE_WEBHOOK_SECRET="whsec_..." # ── Twilio Verify (SMS OTP) ─────────────────────────────────────────────────── TWILIO_ACCOUNT_SID="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" TWILIO_AUTH_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" TWILIO_VERIFY_SERVICE_SID="VAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # ── Media storage (local disk) ──────────────────────────────────────────────── # Absolute path where uploaded files are stored on the server. # In Docker this is the mount point of the media_data volume (/app/uploads). # In dev it defaults to packages/server/uploads/ (relative to server cwd). UPLOAD_DIR=/app/uploads # Public URL prefix that the server serves files under. # With the default nginx/proxy setup this is just /media (same origin). MEDIA_BASE_URL=/media # ── Email (magic links + receipts) ─────────────────────────────────────────── SMTP_HOST="smtp.example.com" SMTP_PORT=587 SMTP_USER="noreply@example.com" SMTP_PASS="..." EMAIL_FROM="Storybid "