# Frontend (Vite): only values that are safe to expose in the browser belong here. VITE_API_URL=http://localhost:3001 # API and PostgreSQL APP_ENV=development API_PORT=3001 DATABASE_URL=postgres://compor:compor_local_password@localhost:5433/compor_hub FRONTEND_ORIGIN=http://localhost:3000 # Required in production. The development fallback must never be used outside localhost. JWT_SECRET=replace-this-with-a-long-random-secret-before-deploying # In Docker/Portainer, these create or update the superadmin every time the API starts. # Keep them out of Git and use a password with at least 12 characters. SUPERADMIN_EMAIL=admin@example.com SUPERADMIN_PASSWORD=change-this-password AUTH_RATE_LIMIT_MAX=10 AUTH_RATE_LIMIT_WINDOW_SECONDS=900 JWT_SESSION_TTL=7d INVITATION_TTL_HOURS=168 PASSWORD_RESET_TTL_HOURS=24 AUDIT_LOG_PAGE_SIZE=50 # Optional welcome e-mails sent when a student creates their own account. # Configure all five values together. Port 465 uses SSL; port 587 uses STARTTLS. SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASS= MAIL_FROM=Compor HUB SUPERADMIN_NAME=Compor HUB Superadmin # Bunny Stream. Set all three in Portainer to enable instructor uploads and # signed embedded playback. Keep every value server-side; none are VITE_ vars. BUNNY_STREAM_LIBRARY_ID= BUNNY_STREAM_API_KEY= BUNNY_EMBED_TOKEN_KEY= # Bunny Read-Only API key. Required only if Bunny webhooks are enabled. BUNNY_WEBHOOK_SECRET= BUNNY_EMBED_TOKEN_TTL_SECONDS=600 # Must not exceed the 5 GB Nginx proxy limit declared in docker/nginx.conf. BUNNY_MAX_UPLOAD_MB=5120 # Bunny Storage course banners. Create a Storage Zone and linked Pull Zone; # copy the Storage endpoint shown in Bunny's FTP & API Access panel. BUNNY_STORAGE_ZONE= BUNNY_STORAGE_PASSWORD= BUNNY_STORAGE_ENDPOINT= BUNNY_STORAGE_CDN_HOST= BUNNY_COVER_MAX_UPLOAD_MB=10 BUNNY_ASSET_MAX_UPLOAD_MB=100 # Docker Swarm / Portainer image tags. The defaults are the Gitea Container Registry images. API_IMAGE=gitea.blyzer.com.br/blyzer/compor-academy-api WEB_IMAGE=gitea.blyzer.com.br/blyzer/compor-academy-web IMAGE_TAG=latest