Skip to content

Legal pages

Show Pony mounts the bundled pages stack (composePagesStack) with a custom renderLegalLayout that reuses the marketing header/footer (violet theme).

User story: visitor reads the privacy policy

Section titled “User story: visitor reads the privacy policy”

A guest lands on Mira’s RSVP page and clicks Privacy in the footer. They need static legal text on the same apex domain (Impressum, Datenschutz, Terms) — not a login, not tenant data. That is what composePagesStack + seeded text-content blocks deliver (chapter 13 routes below). It does not by itself export or delete RSVP rows; see chapter 14 for operational GDPR.

Before: no /legal/* routes — compliance copy lives only in the central template repo, not on the running app.

After: five public routes (Impressum, Privacy, Terms × DE/EN) render inside the same apex chrome as the landing.

Imprint page in marketing chrome
From landing footer to legal imprint
ENDE
/legal/imprint/legal/impressum
/legal/privacy/legal/datenschutz
/legal/terms/legal/nutzungsbedingungen

Impressum and privacy come from legal-pages; terms are wired as a fifth route in wireTermsRoutes (same pattern as Money-Horse).

Legal copy is compiled from kumiko-platform/templates/legal/manifests/show-pony.json into src/generated/legal-content.json and seeded at boot via seedLegalContent.

Regenerate after template changes (from parent workspace):

Terminal window
cd kumiko-platform && bun run legal:sync
  • composePagesStack({ wrapLayout: renderLegalLayout }) in run-config.ts
  • extraContext.textContent wired in bin/main.ts / bin/server.ts
  • Legal seed runs before the legal-pages boot check

Back to the tutorial index: Show Pony.