Environment & Tooling
Quick links: Frontend β’ Backend
Backendβ
Requirements:
- Node.js 22 (enforced at repo root via
engines) - pnpm 9.12.2+ (specified in
packageManagerfield) - 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_BASE64is the base64 of the service account JSON used byfirebase-admin.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKETshould 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_BASEmaps to themediaCloud Function endβuser domain; returned URLs use this base.FUNCTION_REGIONmust 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