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). This is not login or tenant data. composePagesStack and 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.