# ── Domain ──────────────────────────────────────────────────────────────────── # Public domain Caddy will serve and obtain a TLS certificate for. DOMAIN=my-event.example.com # ── App server ──────────────────────────────────────────────────────────────── APP_PORT=3000 # ── Database ────────────────────────────────────────────────────────────────── DATABASE_URL=postgres://eventsnap:secret@db:5432/eventsnap POSTGRES_USER=eventsnap POSTGRES_PASSWORD=secret POSTGRES_DB=eventsnap # ── Authentication ──────────────────────────────────────────────────────────── # Generate with: openssl rand -hex 64 JWT_SECRET=change_me_to_a_random_64_byte_hex_string SESSION_EXPIRY_DAYS=30 # Admin dashboard password (bcrypt hash). # Generate with: htpasswd -bnBC 12 "" yourpassword | tr -d ':\n' ADMIN_PASSWORD_HASH=$2y$12$placeholder_replace_me # ── Event ───────────────────────────────────────────────────────────────────── EVENT_NAME=Max & Maria's Wedding EVENT_SLUG=max-maria-2026 # ── Storage ─────────────────────────────────────────────────────────────────── MEDIA_PATH=/media # ── Upload limits ───────────────────────────────────────────────────────────── DEFAULT_MAX_IMAGE_SIZE_MB=20 DEFAULT_MAX_VIDEO_SIZE_MB=500 # ── Rate limiting ───────────────────────────────────────────────────────────── DEFAULT_UPLOAD_RATE_PER_HOUR=10 DEFAULT_FEED_RATE_PER_MIN=60 DEFAULT_EXPORT_RATE_PER_DAY=3 # ── Capacity ────────────────────────────────────────────────────────────────── DEFAULT_ESTIMATED_GUEST_COUNT=100 # Fraction of total storage that triggers the "low storage" warning (0.0–1.0) DEFAULT_QUOTA_TOLERANCE=0.75 # ── Workers ─────────────────────────────────────────────────────────────────── COMPRESSION_WORKER_CONCURRENCY=2