Skip to content

Marketing apex

Show Pony follows the Money-Horse apex pattern: localized marketing HTML is boot-rendered into dist/pages/, and hostDispatch serves it on the apex. Login and the host dashboard live behind /login (admin SPA with MarketingShell chrome).

Before (chapters 1–11): after you mount the foundation, the apex only exposes the host app — visitors hit /login and see the auth gate in marketing chrome, but / has no public landing yet.

Post-mount host login at /login — the before state for chapter 12

After (this chapter): / is the English marketing landing; /features and /pricing explain the product; legal pages share the same header/footer.

Marketing landing on the apex — English default at /
Landing → Features → Pricing → Login in marketing chrome
PathPage
/English landing (default)
/deGerman landing
/featuresFeatures (EN)
/de/funktionen · /funktionenFeatures (DE)
/pricingPricing (EN)
/de/preise · /preisePricing (DE)
/loginHost login + app
Surface Local Cloud
Host login (apex) http://show-pony.localhost:4180/login https://show-pony.kumiko.rocks/login
Demo invite (rooftop) http://demo.show-pony.localhost:4180/e/rooftop-launch https://demo.show-pony.kumiko.rocks/e/rooftop-launch
Acme invite (offsite) http://acme.show-pony.localhost:4180/e/acme-offsite https://acme.show-pony.kumiko.rocks/e/acme-offsite
Marketing (EN) http://show-pony.localhost:4180/ https://show-pony.kumiko.rocks/
Marketing (DE) http://show-pony.localhost:4180/de https://show-pony.kumiko.rocks/de
Features tour page with tutorial links
Pricing tiers preview (Stripe wired in P2)

At startup, renderAllMarketingPages() writes static HTML under dist/pages/<lang>/…. Production hostDispatch checks the path first; only non-marketing apex paths fall through to admin.html:

const dispatched = dispatchShowPonyApexStatic(path);
if (dispatched !== null) return dispatched;
return { kind: "html", file: "admin.html", injectSchema: true };
— from bin/main.ts

client-admin.tsx wraps the login card in MarketingShell (same header/footer tokens as the static pages) via AuthShellProvider — pixel parity with the landing without duplicating CSS.

Next: Legal pages.