# ── Domain ──────────────────────────────────────────────────────────────────── # Public domain Caddy will serve and obtain a TLS certificate for. DOMAIN=my-event.example.com # ── App server ──────────────────────────────────────────────────────────────── APP_PORT=3000 # docker-compose.yml already forces APP_ENV=production for the `app` service. # Only set this for a non-compose (bare cargo) run; leave unset for local dev. # APP_ENV=production # ── Database ────────────────────────────────────────────────────────────────── # Set a strong password and keep it identical in DATABASE_URL and POSTGRES_PASSWORD. DATABASE_URL=postgres://eventsnap:CHANGE_ME_strong_db_password@db:5432/eventsnap POSTGRES_USER=eventsnap POSTGRES_PASSWORD=CHANGE_ME_strong_db_password POSTGRES_DB=eventsnap # ── Authentication ──────────────────────────────────────────────────────────── # REQUIRED in production: generate with `openssl rand -hex 64` (128 hex chars). # The backend refuses to start in production with this placeholder or any value # that is short or contains change/example/placeholder/replace. 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