Conclave is a pnpm monorepo split by runtime surface:
apps/web: Next.js web client (src/app,src/lib, static assets inpublic/).apps/conclave-skip: active native Swift/Skip application. Make native changes here.apps/mobile: deprecated Expo client. Do not modify it.packages/sfu: mediasoup SFU server and socket handlers.packages/apps-sdk: in-meeting apps runtime SDK.packages/shared-browser: optional VNC-based shared browser service.scripts/: deployment helpers (deploy-sfu.sh,deploy-browser-service.sh).
Use the root quality gates for repository-wide checks and workspace-local commands while developing:
pnpm check: run lint, consistency checks, typechecks, tests, integration checks, and generated-file validation.pnpm build: build the production web and server surfaces.pnpm test,pnpm typecheck,pnpm lint: run the corresponding repository-wide checks.pnpm -C apps/web run dev: start web app on local dev server.pnpm -C apps/web run build && pnpm -C apps/web run start: production build + serve.pnpm -C apps/web run lint: run Next.js lint checks.pnpm -C packages/sfu run dev: run SFU withtsx.pnpm -C packages/sfu run typecheck: strict TS check for SFU.pnpm -C packages/shared-browser run dev|build|typecheck: shared-browser lifecycle.swift build --package-path apps/conclave-skipandswift test --package-path apps/conclave-skip: build and test the active native app.pnpm -C packages/apps-sdk run check:apps(orcheck:apps:fix): validate app integrations.
- Language: TypeScript-first, ESM modules,
strictcompiler settings across packages. - Match existing style: 2-space indentation, double quotes, trailing semicolons.
- React components/types:
PascalCase; variables/functions:camelCase. - Match the existing Swift and Kotlin conventions in
apps/conclave-skip. - Keep imports path-aliased where configured (for example
@/in web).
Vitest suites cover the web, meeting core, and SFU packages. For changes, treat these as required quality gates:
- run
pnpm checkor the lint, typecheck, and test commands for every touched package - boot affected surfaces locally (web, SFU, native app as applicable)
- include manual verification steps in PR description
Recent history follows Conventional Commit style (feat:, fix:, chore:; optional scopes like feat/webinar:). Keep commits focused and imperative.
PRs should include:
- concise summary of what changed and why
- impacted surfaces (
apps/web,apps/conclave-skip,packages/sfu, etc.) - linked issue (
Fixes #123) when applicable - screenshots/video for UI changes
- notes on config/env updates and any follow-up work