Skip to main content

Environment & Tooling

Quick links: Frontend β€’ Backend

Backend​

Requirements:

  • Node.js 22 (enforced at repo root via engines)
  • pnpm 9.12.2+ (specified in packageManager field)
  • Firebase CLI (login and set default project)

Environment variables (web):

NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
FIREBASE_SERVICE_ACCOUNT_BASE64=

STRIPE_SECRET_KEY=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_STARTER_PRICE_ID=
STRIPE_PRO_PRICE_ID=

Notes:

  • FIREBASE_SERVICE_ACCOUNT_BASE64 is the base64 of the service account JSON used by firebase-admin.
  • NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET should be the exact bucket name shown in the Firebase Console (e.g. my-project.firebasestorage.app).
  • Never expose secret keys on the client; only NEXT_PUBLIC_* are client-readable.

Environment variables (functions/backend):

# Storage
MEDIA_BUCKET=
MEDIA_PUBLIC_BASE=https://storage.mysoku.io

# Orchestration
FUNCTION_REGION=us-central1

# TikTok
TIKTOK_CLIENT_KEY=
TIKTOK_CLIENT_SECRET=
TIKTOK_CALLBACK_URL=
# Optional verification via media proxy
TIKTOK_VERIFY_FILENAME=
TIKTOK_VERIFY_CONTENT=

# X (Twitter)
X_CLIENT_ID=
X_CLIENT_SECRET=
X_CONSUMER_KEY=
X_CONSUMER_SECRET=
X_CALLBACK_URL=
X_OAUTH1_CALLBACK_URL=

# Facebook/Instagram/Threads
FACEBOOK_APP_ID=
FACEBOOK_APP_SECRET=
FACEBOOK_CALLBACK_URL=
INSTAGRAM_APP_ID=
INSTAGRAM_APP_SECRET=
INSTAGRAM_CALLBACK_URL=
THREADS_APP_ID=
THREADS_APP_SECRET=
THREADS_CALLBACK_URL=

# YouTube
YOUTUBE_CLIENT_ID=
YOUTUBE_CLIENT_SECRET=
YOUTUBE_CALLBACK_URL=

# LinkedIn
LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=
LINKEDIN_CALLBACK_URL=

# Stripe
STRIPE_WEBHOOK_SECRET=

# Optional TikTok polling helper
APIFY_TOKEN=

Notes:

  • MEDIA_PUBLIC_BASE maps to the media Cloud Function end‑user domain; returned URLs use this base.
  • FUNCTION_REGION must match your queues’ region.

Related frontend: see Frontend

Frontend​

  • Client uses the NEXT_PUBLIC_* variables above; backend‑only secrets must not be bundled.
  • Verify env presence at runtime with /api/debug-env.

Related backend: see Backend