Skip to main content

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:

  1. Install deps
pnpm i
  1. Configure .env.local in apps/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_...
  1. Start development
pnpm dev
  1. Open http://localhost:3000 and use the Pricing/Signup flow to test Stripe checkout with trial.

Related frontend: see Frontend

  1. 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