Data and content
Where content lives, how it's typed, and how state is managed.
- All content in
constants/. No inline copy or data in components; no external content APIs. Copy is grounded in real facts, never invented. constants/is the source of truth. It owns the site's content outright, typed bytypes/. Where an upstream source seeds it, that source stays a reference for facts not yet captured here;constants/still wins.- State discipline. Keep state local:
useStateand URL params for the ephemeral. No speculative global state. - Dates: zone through
fromZonedTime(iso, appTimeZone), never barenew Date(); display-only dates are pre-formatted strings. - Media: every entry carries real dimensions and real
alttext;srcpaths are site-absolute underpublic/. - Licensed assets stay put. Licensed fonts and imagery ship with the site but are never published to other repos or registries.