Files
gridpilot.gg/docs/architecture/website/VIEW_DATA.md
2026-01-11 13:04:33 +01:00

1.1 KiB

ViewData (Website Templates)

ViewData is the only allowed input type for Templates in apps/website.

1) Definition

ViewData is a JSON-serializable, template-ready data structure:

  • primitives (strings/numbers/booleans)
  • arrays and plain objects
  • null for missing values

2) What ViewData is NOT

ViewData is not:

  • a Page DTO (raw transport)
  • a ViewModel (client-only class)
  • a Display Object instance

3) Construction rules

ViewData MUST be created in client code:

  1. Initial SSR-safe render: ViewData = fromDTO(PageDTO)
  2. Post-hydration render: ViewData = fromViewModel(ViewModel)

Templates MUST NOT compute derived values.

4) Determinism rules

Any formatting used to produce ViewData MUST be deterministic.

Forbidden anywhere in formatting code paths:

  • Intl.*
  • Date.toLocaleString() / Date.toLocaleDateString() / Date.toLocaleTimeString()

Reason: SSR and browser outputs can differ.

5) Relationship to Display Objects

Display Objects are used to implement formatting/mapping, but their instances MUST NOT be stored inside ViewData.

Only primitive outputs produced by Display Objects may appear in ViewData.