For developers

Reference

Architecture overview

Apps, packages, deployment topology, data flow.

Monorepo layout

PathWhat
apps/webNext.js 15 App Router (storefronts + admin + provider)
apps/apiNestJS REST API (Bearer + JWT + tenant middleware)
apps/aiNestJS AI service (chat, recommendations, translate, …)
apps/workerBullMQ worker (notifications, fanout, crons)
packages/databasePrisma schema + seed + enrich-demo
packages/sharedZod schemas shared between api / web
packages/authMock + Firebase auth providers
packages/uiReusable UI primitives

Data flow

Browser → web (Next.js, server components + API proxy) → api (NestJS, tenant middleware resolves Host header → tenantId, withTenant() Prisma extension scopes every query). Worker side: BullMQ queues for outbound webhooks, content-i18n, custom-domain verifier, status-poll. AI service is internal-only (api → /chat → Anthropic).

Deploy

GCP Cloud Run (us-east4) behind a global HTTPS load balancer with a wildcard cert for *.orkestr.in. Pushing to GitHub main triggers per-service Cloud Build. Adding a tenant = pure DB write — zero infra changes.