Setup

This page shows the environment variables this deployment needs, and whether each one is currently set. Fill in the missing ones in Vercel → Settings → Environment Variables, then redeploy.

⚠️
9 required variables still needed
See the checklist below. The full walkthrough is at /docs.

1. SupabaseCreate a Supabase project

Sign in at supabase.com, create a free project, then go to SQL Editor and run the contents of supabase/schema.sql from the repo. Then copy the three keys from Settings → API.

  • NEXT_PUBLIC_SUPABASE_URL
    Your Supabase project URL
    Where: Supabase → Settings → API → Project URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY
    Supabase anon (client-safe) key
    Where: Supabase → Settings → API → anon public
  • SUPABASE_SERVICE_ROLE_KEY
    Supabase service role key (server-only)
    Where: Supabase → Settings → API → service_role

2. Telegram BotCreate a Telegram bot

Open Telegram, message @BotFather, send /newbot, save the token + username. Send /setprivacy → Disable, /setjoingroups → Enable.

  • TELEGRAM_BOT_TOKEN
    Bot auth token
    Where: @BotFather → /newbot → copy token
  • TELEGRAM_BOT_USERNAME
    Bot username without @ — used in signup deep links
    Where: Shown by @BotFather after /newbot
  • TELEGRAM_WEBHOOK_SECRET
    Random secret Telegram sends back in a header
    Where: Generate: openssl rand -hex 32
  • TELEGRAM_NOTIFICATIONS_CHAT_IDoptional
    Admin group chat ID for JOINED/LEFT + alerts
    Where: Create a group, add bot as admin, use @getidsbot
  • TELEGRAM_TECHNICAL_CHAT_IDoptional
    Admin group for NEW GROUP + system events
    Where: Create a group, add bot as admin, use @getidsbot
  • TELEGRAM_COMMUNITY_CHAT_IDoptional
    Optional community group (welcome messages)
    Where: Create a group, add bot, use @getidsbot

3. Cron & SecretsGenerate secrets

Create two random strings. In a terminal: openssl rand -hex 32. One for CRON_SECRET, one for TELEGRAM_WEBHOOK_SECRET.

  • CRON_SECRET
    Protects the cron + webhook-register endpoints
    Where: Generate: openssl rand -hex 32

4. AppApp configuration

APP_URL is your Vercel deployment URL. ADMIN_EMAILS is who’s allowed to log into /admin.

  • APP_URL
    Your deployed URL (no trailing slash)
    Where: Vercel → Project → Deployments → Domain
  • ADMIN_EMAILS
    Comma-separated emails allowed to admin-login
    Where: Your own email addresses
  • PUBLIC_ALLOWED_ORIGINSoptional
    Optional CORS allowlist for /api/bot/lead
    Where: Other domains that embed the signup form

After you add variables

  1. Save each one in Vercel → Settings → Environment Variables (Production).
  2. Click Redeployon the most recent deployment — env var changes don’t auto-trigger a rebuild.
  3. Reload this page to verify each check turns green.
  4. Open /docs for the full walkthrough including webhook registration.