# ViewData (Website Templates) ViewData is the **only** allowed input type for Templates in `apps/website`. Authoritative contract: [`WEBSITE_CONTRACT.md`](docs/architecture/website/WEBSITE_CONTRACT.md:1). ## 1) Definition ViewData is a JSON-serializable, template-ready data structure: - primitives (strings/numbers/booleans) - arrays and plain objects - `null` for missing values **Uncle Bob says**: "Data structures should not have behavior." ViewData is a dumb container. ## 2) What ViewData is NOT ViewData is not: - an API Transport DTO (raw transport) - a ViewModel (client-only class) - a Display Object instance (rich API) ## 3) Construction rules ViewData is created by **ViewData Builders**: ### Server Components (RSC) ```typescript const apiDto = await PageQuery.execute(); const viewData = ViewDataBuilder.build(apiDto); return