AUTH4D-47 public pricing page

The public site (apps/site) publishes /pricing/. It is a static page and adds no API endpoints, Worker routes or bindings.

Data source

The page renders listPlans() from packages/billing/src/catalog.ts at build time through apps/site/src/lib/plans.ts. Prices are integer minor units formatted in ZAR by formatMoney from packages/email/src/currency.ts. Changing a price or limit in the catalog changes the page on the next build; the site holds no copy of these values.

Each plan card carries data-plan-id, data-amount-minor and data-currency attributes for tests.

  • The primary navigation links to /pricing/ on every page.
  • The page’s sign-up action links to the console origin (https://app.auth4.dev). Plan selection and payment happen in the console and API; the site never sends a plan or price anywhere.
  • /docs/limitations/ links to the page.

Checks

apps/site/src/checks/check-site.mjs allows pricing phrases only on /pricing/ and the generated API reference pages, and requires one ZAR price per plan card. tests/e2e/auth4d-47.pricing.spec.ts compares the rendered page with the catalog at 1280 px and 360 px.

Source: docs/api-spec/auth4d-47.md