feat(ui): public offer page at /offer/ with a landing footer link #222
Reference in New Issue
Block a user
Delete Branch "feature/public-offer-page"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Adds the public offer (публичная оферта) as a static page at
/offer/and a smallcentered "Публичная оферта" footer link on the landing.
ui/legal/offer_ru.md— the editable Russian source (converted from the source PDF).emit-offerplugin renders it (viamarked) to a standalonedist/offer/index.html, which the landing container serves at/offer/(a bare/offerredirects in). Regenerated from the markdown on every build./offer/serves the offer page (not a silent fall-through to the landing shell).
Why
The offer is the legal document a purchase accepts — it must exist before real-money intake
goes live. Shipped first and standalone so the offer text can be edited in parallel with the
payment work.
Owner action
ui/legal/offer_ru.mdfreely — the/offer/page re-renders from it on the nextbuild/deploy. The English version (
offer_en.md) is deferred; ping me when you want it.rubs against the non-refundable stance for a digital good — reconcile as you see fit.
Notes
ui/legal/(notdocs/legal/) because the landing Docker buildstage only copies
ui/into its context; keeping it there makes the local and image buildsagree.
markedadded as a dev-dependency (build-time render only, not in the app bundle).Verification
pnpm check(0 errors),pnpm test:unit(offer render + i18n parity green),pnpm build(emits
dist/offer/index.html),pnpm exec playwright test e2e/landing.spec.ts(chromium +webkit green).
/offer/serving + the/offer→/offer/redirect verified locally againstcaddy:2-alpinewith the builtdist; landing Caddyfilecaddy validateclean.