Skip to content

managed-pages

Tenant-editable, server-rendered public pages with per-tenant branding. Stores one Markdown page per (tenantId, slug, lang) in the read_pages entity table with a published gate plus description/ogImage SEO meta. Registers an anonymous GET {basePath}/:slug route that resolves the tenant from the request Host via the app-supplied resolveApexTenant, serves only published pages (drafts → 404), renders Markdown through the hardened page-render core, and isolates per-tenant content with Vary: Host. Ships TenantAdmin/SystemAdmin admin screens (entityList + entityEdit) backed by convention CRUD handlers (managed-pages:write:page:{create,update,delete}, managed-pages:query:page:{list,detail}); the app wires nav/workspace onto managed-pages:screen:page-list. Branding (via config, scope tenant): branding-{title,description,site-url,accent-color,logo-url,layout-preset} keys with write-time validation (hex color, https URLs), a configEdit self-service screen (managed-pages:screen:branding-settings), and a managed-pages:query:branding read that the render path applies as scoped :root CSS vars + a logo/title header. Also exposes managed-pages:write:set (idempotent slug-keyed upsert, SystemAdmin cross-tenant via tenantIdOverride) as a provisioning API. Requires config + anonymousAccess wired at app bootstrap.

  • Requires: config
  • Activation: always on (not toggleable)

Per-tenant config keys, set via the tenant-admin UI or a seed. 🔒 = encrypted at rest.

| Key | Type | Default | Scope | Who can write | Who can read | |---|---|---|---|---|---| | branding-accent-color | text | "" | tenant | system, TenantAdmin, Admin, SystemAdmin | all | | branding-custom-css | text | "" | tenant | TenantAdmin, Admin, SystemAdmin | all | | branding-description | text | "" | tenant | system, TenantAdmin, Admin, SystemAdmin | all | | branding-layout-preset | select (minimal | centered | wide) | centered | tenant | system, TenantAdmin, Admin, SystemAdmin | all | | branding-logo-url | text | "" | tenant | system, TenantAdmin, Admin, SystemAdmin | all | | branding-site-url | text | "" | tenant | system, TenantAdmin, Admin, SystemAdmin | all | | branding-title | text | "" | tenant | system, TenantAdmin, Admin, SystemAdmin | all |