Skip to content

Deployment

This monorepo deploys two separate front-ends to Cloudflare Pages, both connected to this GitHub repository. Each Pages project has its own dashboard build configuration. Cloudflare Pages only reads a single wrangler.toml at the repo root, and that file belongs to the members portal — so the admin app's settings live only in its Pages dashboard. This document is the source-of-truth for both so the dashboards can be reproduced or audited.

The repo is a pnpm workspace (pnpm-workspace.yaml, packageManager: pnpm@11.2.2 in the root package.json). Every Pages build must install from the repo root so the workspace resolves; setting a project's "Root directory" to a sub-app breaks the install.

Project 1 — yourpeople (Members Portal)

  • App: apps/members (@yourpeople/members), Nuxt 4 + Nitro cloudflare-pages preset.
  • Repo config: root wrangler.toml (name = "yourpeople-members", pages_build_output_dir = "apps/members/dist", compatibility_flags = ["nodejs_compat"]). Pages reads this on every deploy.
SettingValue
Root directory/
Build commandpnpm install --frozen-lockfile && pnpm --filter @yourpeople/members build
Build output directoryapps/members/dist
Node version22 (NODE_VERSION=22)

Production + Preview env vars: NUXT_SESSION_PASSWORD (rotating 32-byte random — never commit), NUXT_API_BASE, NUXT_PUBLIC_API_BASE. See apps/members/README.md for the full rationale (incl. why nodejs_compat is required).

Project 2 — yourpeopleapp (Admin Portal)

  • App: apps/web (@yourpeople/web), Vue 3 + Vite SPA (static output, no Worker — nodejs_compat not needed).
  • Repo config: none. The root wrangler.toml belongs to the members project, so this project is driven entirely by its dashboard settings below.
SettingValue
Root directory/
Build commandpnpm install --frozen-lockfile && pnpm --filter @yourpeople/web build
Build output directoryapps/web/dist
Node version22 (NODE_VERSION=22)

Why this project has been failing: it predates the pnpm-workspace conversion (PR #18) and its dashboard build command still runs an npm-based install against apps/web. With no usable root package.json for npm and apps/web now a workspace member, that install fails before any build step. Updating the build command and root directory to the values above fixes it.

If the admin app does not need its own public Pages deployment, delete this project instead — that removes a perpetually-red status check and the duplicate deploy webhooks on every PR.

Notes

  • Do not set "Root directory" to apps/members or apps/web. Pages clones the whole repo; the build command reaches into the target app via the --filter flag. A sub-directory root breaks pnpm-workspace resolution and fails on branches that don't contain that directory.
  • The GitHub Actions workflow (.github/workflows/members-ci.yml) is a separate CI surface from these Pages deploys; it lints, type-checks, tests and builds both apps plus the .NET API on every push.