Separate YouTube video titles from on-video song/artist fields with Pro gating, serve curated fonts and watermark assets for 1:1 preview parity, and include billing/API/docs/deploy stack for self-hosted release. Co-authored-by: Cursor <cursoragent@cursor.com>
47 lines
2.6 KiB
Bash
47 lines
2.6 KiB
Bash
DATABASE_URL="postgresql://s2yt:s2yt@localhost:5433/s2yt"
|
||
REDIS_URL="redis://localhost:6380"
|
||
NEXTAUTH_URL="http://localhost:3000"
|
||
# Generate with: openssl rand -base64 32
|
||
NEXTAUTH_SECRET="replace-with-a-long-random-secret"
|
||
# Used to encrypt YouTube OAuth tokens at rest (falls back to NEXTAUTH_SECRET if unset)
|
||
# TOKEN_ENCRYPTION_KEY="replace-with-another-long-random-secret"
|
||
# Server-side Google OAuth 2.0 credentials from Google Cloud Console
|
||
GOOGLE_CLIENT_ID="your-google-client-id.apps.googleusercontent.com"
|
||
GOOGLE_CLIENT_SECRET="your-google-client-secret"
|
||
UPLOAD_DIR="./uploads"
|
||
# Open-source / self-hosted: unlimited video quota, API, and Pro features
|
||
# S2VID_EDITION="selfhosted"
|
||
# Admin API key for approving/rejecting quota extension requests (Bearer token)
|
||
# ADMIN_API_KEY="your-secret-admin-key"
|
||
# Pro users generate API keys in Dashboard → Settings (stored hashed; shown once)
|
||
# Optional: override bundled ffmpeg-static binary (leave unset to use npm package)
|
||
# FFMPEG_PATH="C:/path/to/ffmpeg.exe"
|
||
# Public Gitea issues URL for community support links
|
||
NEXT_PUBLIC_GITEA_ISSUES_URL="https://git.atakanozban.com/Songs2VID/songs2vid/issues"
|
||
NEXT_PUBLIC_GITEA_URL="https://git.atakanozban.com/Songs2VID"
|
||
NEXT_PUBLIC_DOCKER_HUB_URL="https://hub.docker.com/r/atakanozban/songs2vid"
|
||
# Docusaurus docs — local: npm run docs:dev → http://localhost:3001
|
||
# NEXT_PUBLIC_DOCS_URL="http://localhost:3001"
|
||
# Production: NEXT_PUBLIC_DOCS_URL="https://docs.songs2vid.com"
|
||
# Stripe billing (Pro €5/mo + Free 1–15 credit top-ups @ €0.25)
|
||
# STRIPE_SECRET_KEY="sk_test_..."
|
||
# Prefer a restricted key (rk_...) with Checkout + Customers + Billing Portal + Webhooks only
|
||
# STRIPE_WEBHOOK_SECRET="whsec_..."
|
||
# Optional Dashboard Price ID for Pro (otherwise inline price_data €5/mo is used)
|
||
# STRIPE_PRO_PRICE_ID="price_..."
|
||
# Collect VAT/GST via Stripe Tax AFTER adding Tax registrations in Dashboard:
|
||
# STRIPE_AUTOMATIC_TAX="true"
|
||
# Force local mock upgrades/grants without Stripe: BILLING_DEV_MOCK=true
|
||
# Disable auto-mock when Stripe key missing: BILLING_DEV_MOCK=false
|
||
# Point Stripe webhook to: POST /api/stripe/webhook
|
||
# Events (required):
|
||
# checkout.session.completed
|
||
# invoice.payment_succeeded
|
||
# invoice.payment_failed
|
||
# customer.subscription.updated
|
||
# customer.subscription.deleted
|
||
# Dashboard: enable Customer portal (Settings → Billing → Customer portal)
|
||
# Optional: Managed Payments (MoR) enable in Dashboard + set managed_payments on Checkout if you use it
|
||
# Dev helpers: POST /api/dev/grant-credits { "action": "set-pro" | "free-top-up" | "grant-credits" }
|
||
# Admin reset: POST /api/admin/reset-credits Authorization: Bearer $ADMIN_API_KEY
|