Skip to content

Repository Structure

This is an Nx monorepo managed with pnpm workspaces. All deployable surfaces and shared packages live under two top-level directories.

verify-by-video/
├── apps/
│ ├── agent-app/ # Agent video widget (JavaScript, Static Web App)
│ ├── customer-app/ # Customer session launcher (JavaScript, Static Web App)
│ ├── docs/ # This documentation site (Astro/Starlight)
│ ├── onboarding/ # Developer onboarding site (Astro/Starlight)
│ └── vm-start-stop/ # VM lifecycle scheduler (Python)
├── packages/
│ └── pexip-sdk/ # MaxConf API - Azure Functions v2 + FastAPI (Python)
├── .devcontainer/ # Dev container configuration
├── .github/
│ ├── workflows/ # GitHub Actions CI/CD
│ └── GITHUB_ACTIONS_CONFIG.md # Deployment configuration reference
├── nx.json # Nx workspace configuration
├── pnpm-workspace.yaml # pnpm workspace definition
├── pyproject.toml # Root Python config (UV workspace)
└── tsconfig.base.json # Shared TypeScript config
ProjectLanguagePlatformDeployment
agent-appJavaScriptAzure Static Web AppSWA deployment token
customer-appJavaScriptAzure Static Web AppSWA deployment token
docsMDX / AstroAzure Static Web AppSWA deployment token
onboardingMDX / AstroLocal onlyNot deployed
vm-start-stopPythonGitHub Actions (cron)Runs in workflow
pexip-sdkPython / FastAPIAzure Functions v2OIDC + slot swap
  • pexip-sdk owns all server-side Pexip and Azure interactions. Do not duplicate its logic in frontend apps.
  • agent-app and customer-app are fully static - no server-side runtime.
  • docs is product/team documentation. onboarding is developer learning. They serve different audiences and must not be conflated.
  • The Pexip Management API and the Pexip WebRTC client SDK are distinct surfaces. The Management API is consumed by pexip-sdk; the WebRTC SDK (pexrtc.js) is consumed by agent-app and customer-app.

Each project has a project.json defining its targets (build, serve, test, lint). Use Nx Console or the CLI to discover available targets:

Terminal window
# List all projects
nx show projects
# Show targets for a specific project
nx show project pexip-sdk
# Visualize dependencies
nx graph
FilePurpose
nx.jsonTask pipeline, caching, default runner config
pnpm-workspace.yamlDeclares apps/* and packages/* as workspace packages
pyproject.toml (root)UV workspace members, shared Python settings
tsconfig.base.jsonTypeScript path aliases and compiler defaults
.github/workflows/*.ymlCI/CD workflow definitions
.devcontainer/devcontainer.jsonContainer image, features, extensions, ports
  • Node packages: Managed via pnpm workspaces. Run pnpm install at the root.
  • Python packages: Managed via UV. Each Python project has its own pyproject.toml with dependencies. Run uv sync at the root to install all.
  • Global tools (Nx, pnpm, Azurite): Installed globally in the dev container via setup.sh.