Building Blocks
Cohesive. Presentation
Cohesive.Presentation declares user-facing surfaces from backend-owned semantics: pages, workspaces, views, forms, actions, flows, bindings, and generated frontend contracts.
Presentation turns semantic system definitions into inspectable product surfaces. It is not a replacement for a frontend framework; it is the layer that preserves meaning while projecting into one.
Backend-Owned UI Semantics
Many systems duplicate the same facts across backend handlers, generated clients, frontend routes, form schemas, table columns, action enablement checks, and tests.
Cohesive.Presentation keeps those facts attached to the semantic model. A form can know which shape it edits, an action can know which API operation it calls, and a view can know which relation or repository query supplies its data.
Surface Model
Presentation definitions can describe:
- Applications, workspaces, pages, routes, and panels.
- Data sources, views, tables, cards, forms, fields, and metrics.
- Actions, navigation, command surfaces, and task flows.
- Visibility, enablement, labels, and derived state through expressions.
- Target bindings for React, design systems, generated tests, and API clients.
Actions And Forms
Forms and actions are strongest when they remain connected to backend semantics. A create action can bind to an API command, a transition action can expose preconditions and expected results, and a query form can lower into a Cohesive.Relations query.
This lets presentation surfaces participate in the same identity, validation, API, storage, and process model as the backend.
Projection Targets
| Target | What it receives | Why it helps |
|---|---|---|
| React UI | Typed surfaces, actions, forms, views, and data bindings. | Frontend code starts from product semantics instead of duplicated route and field strings. |
| Generated clients | API operation ids, scope metadata, route parameters, and response shapes. | Requests stay aligned with backend definitions. |
| Tests | Stable semantic identifiers and generated mocks. | Tests can target meaning instead of incidental DOM details. |
| Design systems | Component roles and interaction intent. | Different renderers can share the same underlying product model. |
Why It Matters
Presentation becomes another interpretation of the semantic system model rather than a separate frontend reinvention. Product surfaces can evolve while preserving identifiers, contracts, actions, and state behavior across the stack.
