Files
plainpages/examples
lilleman a005acb93d
CI / full-gate (push) Successful in 2m38s
Cut non-essential prose from docs and comments, and require the same of every future change
README loses the competitor comparison, the personas and the repeated philosophy; the
five near-identical E2E command blocks become a table plus one command, and the file
map a clause per entry. AGENTS.md keeps every decision but drops the narrative around
them. todo.md's completed items collapse to their task line — git holds the rest.

Comments lose restatement, README duplication and history ("used to", "originally",
dated notes). AGENTS.md gains a Prose discipline section making this a standing pass on
every change rather than a one-off cleanup.

src/compose.test.ts now expects 6 documented E2E run commands, not 10, since the README
states the command once instead of per suite.
2026-08-05 23:41:12 +02:00
..

examples/

Copy-in reference material. Each subfolder mirrors a drop-in mount dir at the repo root — copy it across (or bind-mount your own) and restart.

Path Copy into Example of
plugins/scheduling/ plugins/scheduling/ The reference plugin: a list page over an upstream REST service, a CSRF-guarded form that forwards a write, and permission-gated nav — built from the core building blocks, holding no state. Imports the host surface as #plugin-api. See its README and the plugin contract.
plugins/admin/ plugins/admin/ The system-admin plugin: the Users / Groups / Permissions / OAuth2-clients screens for running Plainpages itself. A system plugin — it administers the Ory identity stack via the privileged ctx.system surface instead of its own upstream. Copy it in to get a GUI for user & group admin. See its README.
config/menu.ts config/menu.ts The central menu override + branding template (rename/group/order/hide nav, set app name/logo/theme). Imports its typed builder as #menu-config; config/ ships empty, so defaults apply until you copy this in. See The menu system.
shifts-upstream/ — (dev service) A throwaway mock backend the reference plugin reads/writes — stdlib-only, in-memory, no auth. Stands in for your real service so docker compose up shows the plugin working out of the box; in production you point SCHEDULING_UPSTREAM at the real thing instead.