Extending
Local development
Run the full stack on lvh.me. Mock services for payments + AI + storage + fulfillment.
Prerequisites
- Node 20+
- pnpm 9.12.0
- Redis (local or Upstash) — BullMQ broker
- A Postgres database — Neon free tier is fine
- .env.local at the repo root (cp .env.example .env.local)
First-time setup
pnpm install
pnpm --filter @orkestr/database exec prisma generate
pnpm --filter @orkestr/database exec prisma migrate deploy
pnpm --filter @orkestr/database exec tsx src/seed.ts
pnpm --filter @orkestr/database exec tsx src/enrich-demo.tsRun the stack
# 1. Redis
redis-server --daemonize yes --port 6379
# 2. API (port 4000) — uses ts-node for NestJS DI compatibility
cd apps/api && PORT=4000 npx ts-node \
--project tsconfig.dev.json --transpile-only src/main.ts
# 3. AI (port 4100)
cd apps/ai && PORT=4100 npx ts-node \
--project ../api/tsconfig.dev.json --transpile-only src/main.ts
# 4. Worker
cd apps/worker && npx tsx src/main.ts
# 5. Web (port 3000)
cd apps/web && WEB_BASE_URL=http://lvh.me:3000 npx next dev -p 3000 -H 0.0.0.0Test logins
| Role | URL | Email / password |
|---|---|---|
| Platform admin | lvh.me:3000/login | admin@orkestr.dev / orkestr-dev |
| Provider (Acme) | acme.lvh.me:3000/login | owner@acme.dev / orkestr-dev |
| Provider (Lumen) | lumen.lvh.me:3000/login | owner@lumen.dev / orkestr-dev |
| Customer | acme.lvh.me:3000/login | amelia.client@orkestr.dev / orkestr-dev |
Mock services
Without real keys: Stripe → mock payment provider, Anthropic → mock LLM, GCS → /tmp/orkestr-uploads, Bookalimo / Flights → mock clients with canned data. The whole booking flow runs offline.