Overview
apps/cms is the dedicated home for EPM authoring.
- It owns the CMS UI, routing, workspace picker, and
/internal/adminregistry surface. - It is intentionally a satellite frontend, not an API owner.
- All CMS and EPM API traffic still goes through
apps/web.
Routing
/{wsId}: CMS home/{wsId}/content: content index/{wsId}/content/{entryId}: entry editor/{wsId}/collections/{collectionId}: collection details/{wsId}/preview: preview and publish surface/internal/admin: root admin registry and workspace enablement
Access Model
- Only workspaces with EPM enabled can appear in the CMS workspace picker.
- A workspace must also satisfy the existing EPM permissions to open the CMS workspace routes.
- Only platform admins can open
/internal/admin. - Only platform admins can enable or disable EPM access for a workspace.
API Ownership
apps/cmsrewrites/api/:path*toapps/web.- New CMS backend behavior should be added in
apps/web, then exposed throughpackages/internal-api. - This keeps proxy behavior, bot protection, and infrastructure controls centralized.
Local Development
- Use
bun dev:cmsto run the CMS app with the shared packages andapps/web. - Use
bun devx:cmsorbun devrs:cmswhen you also need a reset local Supabase environment.
CI/CD
- Preview deployments run through
.github/workflows/vercel-preview-cms.yaml. - Production deployments run through
.github/workflows/vercel-production-cms.yaml. - Both workflows are gated through
ci-check.ymland thetuturuuu.tsworkflow allowlist. - The Vercel project must be configured through the
VERCEL_CMS_PROJECT_IDrepository secret.