bb6c806cdd
POST /api/internal/quiz-lead accepts archetype quiz results and idempotently upserts subscriber in Listmonk (create on 201, PUT on 409). Documents QUIZ_LEAD_SECRET and LISTMONK_* vars in .env.example. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.1 KiB
Bash
35 lines
1.1 KiB
Bash
DATABASE_URL="postgresql://lms_user:password@localhost:5432/lms_db"
|
|
|
|
BETTER_AUTH_SECRET="generate-with: openssl rand -base64 32"
|
|
BETTER_AUTH_URL="http://localhost:3000"
|
|
|
|
RESEND_API_KEY=""
|
|
EMAIL_FROM="noreply@school.second-brain.ru"
|
|
|
|
S3_ENDPOINT="https://nbg1.your-objectstorage.com"
|
|
S3_BUCKET="second-brain-lms"
|
|
S3_ACCESS_KEY=""
|
|
S3_SECRET_KEY=""
|
|
S3_REGION="eu-central"
|
|
|
|
# Cloudflare Turnstile (anti-bot защита на регистрации)
|
|
NEXT_PUBLIC_TURNSTILE_SITE_KEY=""
|
|
TURNSTILE_SECRET_KEY=""
|
|
|
|
# Kinescope API
|
|
KINESCOPE_API_KEY=""
|
|
|
|
# Internal access-provisioning (payment-router → /api/internal/grant)
|
|
INTERNAL_GRANT_SECRET=""
|
|
|
|
# Freemium: slug бесплатного курса, в который авто-записываем новых юзеров при регистрации
|
|
FREE_COURSE_SLUG=obsidian-start
|
|
|
|
# Freemium quiz funnel (Typebot → /api/internal/quiz-lead)
|
|
QUIZ_LEAD_SECRET=""
|
|
# Listmonk API base — публичный домен (Listmonk живёт на Hetzner, наружу через newsletter.)
|
|
LISTMONK_URL="https://newsletter.second-brain.ru"
|
|
LISTMONK_USER="apiuser"
|
|
LISTMONK_TOKEN=""
|
|
LISTMONK_QUIZ_LIST_ID=""
|