Spaces:
Runtime error
Runtime error
| # Copy this file to .env and fill in real values for local development. | |
| # In production (HF Spaces / Render / etc.), set these as the platform's | |
| # secret/env-var settings instead of committing a .env file there too. | |
| # --- Required ----------------------------------------------------------- | |
| # Supabase project URL and service role key (Project Settings -> API). | |
| # The service role key bypasses Row Level Security -- this backend is the | |
| # ONLY thing that should ever hold it. Never expose it to the frontend. | |
| SUPABASE_URL= | |
| SUPABASE_SERVICE_ROLE_KEY= | |
| # Random secret used to sign team/admin/judge session tokens (HMAC-SHA256). | |
| # Generate one with: python3 -c "import secrets; print(secrets.token_hex(32))" | |
| # The server refuses to issue or verify sessions if this is unset -- there | |
| # is no insecure default. | |
| SESSION_SECRET= | |
| # Comma-separated list of origins allowed to call this API from a browser. | |
| # Set this to your deployed frontend's actual URL(s) before going live -- | |
| # e.g. https://your-frontend.vercel.app | |
| # Defaults to localhost only if unset, which will break the deployed | |
| # frontend until you set this. | |
| CORS_ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173 | |
| # --- Admin accounts ------------------------------------------------------- | |
| # One-time secret for creating the FIRST admin account via | |
| # POST /admin/bootstrap. Only works while the `admins` table is empty -- | |
| # once one admin exists, that endpoint always 403s regardless of this | |
| # value. Alternative: skip this entirely and insert the first admin | |
| # directly via Supabase's SQL editor (see README "Creating admin accounts"). | |
| ADMIN_BOOTSTRAP_SECRET= | |
| # --- Optional: team access-code emails (Resend) -------------------------- | |
| # If unset, email sending is skipped (logged as a warning) -- team creation | |
| # still works, you just copy the access code from the admin Teams tab | |
| # instead of it being emailed automatically. | |
| RESEND_API_KEY= | |
| RESEND_FROM=onboarding@resend.dev | |
| # --- Optional: split-Space embedder (recommended for 100+ participants) -- | |
| # Leave both unset for a single-Space deploy (embedding + NER models load | |
| # in-process in this backend instead). Set EMBEDDER_URL to point at a | |
| # separately-deployed embedder Space (see embedder/) to isolate that | |
| # CPU-heavy inference from this API's request-handling. | |
| EMBEDDER_URL= | |
| # Shared secret sent as X-API-Key to the embedder Space -- set the SAME | |
| # value here and on the embedder Space's own EMBEDDER_API_KEY, or the | |
| # Space is an open, unauthenticated compute endpoint to anyone who finds | |
| # its URL. | |
| EMBEDDER_API_KEY= | |
| # --- Optional tuning (sensible defaults, rarely need changing) ----------- | |
| SESSION_TTL_SECONDS=72000 | |
| MODEL_NAME=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 | |
| SIMILARITY_THRESHOLD=0.90 | |
| BATCH_SIMILARITY_THRESHOLD=0.90 | |
| FUZZ_PREFILTER_THRESHOLD=55 | |
| FUZZ_TOP_K=25 | |
| EMBEDDER_TIMEOUT_SECONDS=3.0 | |
| EMBEDDER_CIRCUIT_FAILURE_THRESHOLD=3 | |
| EMBEDDER_CIRCUIT_COOLDOWN_SECONDS=30 | |
| NER_TIMEOUT_SECONDS=60.0 | |