Skip to content

Public site hydration and ISR #6514

Description

@seanmalbert
  • General
  • Backend
  • Public
  • Partners

Background / Issue

The public site must render each jurisdiction's DB-driven translations and structured content, keep
its static/SEO serving profile, and reflect admin edits promptly. Overridable pages move to ISR
rather than SSR.

Technical Context

  • TDD: §5.2, §5.3, §5.6, §8.
  • Fetch per-site overrides into the polyglot at generation; keep overridable pages on
    getStaticProps with a short revalidate (ISR). Add an on-demand revalidation API route
    (res.revalidate) triggered on admin save, paired with a CDN path purge (or short s-maxage).
  • Wire structured-content rendering (replace the null-returning jurisdiction_*.tsx stubs).
  • Confirm tIfExists compatibility: it resolves against the same polyglot, and the three-state
    semantics hold (no override / value / empty-to-hide).
  • Depends on: Translation read/merge service and public read endpoints #6509 (read/merge service); JurisdictionContent service and admin CRUD #6511 (content service).

Acceptance Criteria

  • Overridable public pages render as ISR with content read at generation; SSR HTML carries
    translated strings with no flash of raw keys.
  • An admin save triggers res.revalidate() for the affected routes plus a CDN purge (or short
    s-maxage), and the change appears within seconds.
  • Footer/FAQ/resources render from DB content matching the current static output (parity).
  • tIfExists hides a section for an absent key or an empty override value; a base section can be
    hidden with an empty override and shown by reverting.

QA Notes

Public site. Verify pages are statically served (ISR), an admin content edit appears within seconds
after revalidation + CDN purge, and a tIfExists-driven section shows/hides correctly for
value/empty/absent. Include a rendering-parity check against current static content.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions