Quickstart
Quick links: Frontend β’ Backend
Follow these steps to run Sokuho locally.
Backendβ
Prerequisites:
- Node.js 22 (enforced at root via
engines) - pnpm 9.12.2+ (specified in
packageManager) - Firebase CLI (for Functions/emulators)
Steps:
- Install deps
pnpm i
- Configure
.env.localinapps/web:
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...
FIREBASE_SERVICE_ACCOUNT_BASE64=...
STRIPE_SECRET_KEY=sk_test_...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_STARTER_PRICE_ID=price_...
STRIPE_PRO_PRICE_ID=price_...
- Start development
pnpm dev
- Open
http://localhost:3000and use the Pricing/Signup flow to test Stripe checkout with trial.
Related frontend: see Frontend
- Create Cloud Tasks queues (once per project)
Queues are required for orchestration and perβplatform publish jobs. Use your Functions region (default here is us-central1). Create only what you need; you can add more later.
REGION=us-central1
# Orchestrator queue
gcloud tasks queues create orchestrate-posts --location="$REGION"
# Provider publish queues (examples)
gcloud tasks queues create publish-x --location="$REGION"
gcloud tasks queues create publish-facebook --location="$REGION"
gcloud tasks queues create publish-instagram --location="$REGION"
gcloud tasks queues create publish-threads --location="$REGION"
gcloud tasks queues create publish-tiktok --location="$REGION"
gcloud tasks queues create publish-youtube --location="$REGION"
# Add new providers as needed, e.g. LinkedIn
gcloud tasks queues create publish-linkedin --location="$REGION"
# Verify
gcloud tasks queues describe orchestrate-posts --location="$REGION"
gcloud tasks queues describe publish-x --location="$REGION"
Frontendβ
- Sign in to create a Firebase ID token; the app will mint a server cookie via
/api/auth/session. - Connect an integration from Settings; the UI starts OAuth via Functions start endpoints.
- Publish via the dashboard; hooks call Functions publish endpoints with your ID token.
Related backend: see Backend