Rendering & SSR
Server-side rendering in Semitexa PHP: components, slots, app shell, deferred blocks, live widgets, the asset pipeline and reactive UI parts.
-
SSR Philosophy
Semitexa SSR is one continuous rendering architecture: page, slots, deferred regions, live refresh and interactive components in one server-owned story.
-
Resource DTOs
A Resource DTO is the one typed source of presentation data: handlers shape it once, templates consume it everywhere, and no view has to dissect random arrays.
-
Slot Resources
Each page region is its own resource pipeline with the same template system as the main page. No scattered partial glue, no mystery wiring.
-
Components
Reusable, attribute-registered UI components, discovered automatically from the classmap.
-
SEO
Set the title, description and Open Graph tags from your PHP handler. No template hacks needed.
-
Asset Pipeline
Declare assets with glob patterns in assets.json. They are served, versioned and injected automatically.
-
Component Script Assets
A Semitexa SSR component can own its optional enhancement asset, so behavior travels with the component instead of leaking into page-level glue.
-
Script Injection
Deferred blocks carry their own JS, injected once when the block arrives and never duplicated.
-
Deferred Blocks
SSR renders the shell first, then expensive regions stream in as real HTML over SSE. No SPA handoff and no client-side page rebuild.
-
Block Isolation
Two identical blocks on the same page run independently: scoped DOM, scoped JS, no conflicts.
-
Live Widgets
The server re-renders a live slot on a cadence and pushes it down the page's own SSE connection. SSR first, no SPA runtime, no polling.
-
App Shell
A multi-page admin feels like one application: mark which regions change per page, and the framework derives the chrome-less variant and its client.
-
Reactive Report
Background work updates an SSR-first slot in place, so the UI feels live without falling back to SPA state orchestration.
-
Page Blocks
Landing-page sections as data-driven components: hero, features, stats, pricing, call to action, FAQ and footer, every link target checked by ui_href().
-
Reactive Import
Background batches keep moving, and the page reflects server progress as live HTML instead of a client-managed progress app.
-
Field Types
One field declaration such as Field::email('contact') is the form control, validation, stored value, grid column and filter. Add types with #[AsFieldType].
-
Live by Default
How a Semitexa page stays live: writes reach every open screen as keyed patches, components redraw, state stays on the server and reconnects resume.
-
Collection Feeds
A live, paginated, searchable, sortable, filterable feed for platform.grid in one #[AsCollectionFeed] class over an ORM model, with no setters or field map.
-
CRUD Screens
List, live grid, view, create, edit, delete, row and bulk actions, permissions and Ctrl+K over one ORM model, from one #[AsCrud] class with a field list.
-
Dashboards
Dashboard widgets registered by attribute: stats with a trend, recent records, small SVG charts, each behind its own permission, laid out by platform.dashboard.
-
Reactive Analytics
Independent analytics jobs can light up one dashboard progressively, while the page stays server-rendered from the first byte.
-
Settings Pages
An editable settings page in one class: fields with defaults, stored per tenant in platform-settings, validated by field rules, grouped and read back typed.
-
Screens an AI Composes
How a model composes a screen as a UI tree, how the server checks it against the same catalog and permissions a person gets, how repair errors go back to the model, and how agents reach it over MCP.
-
CMS
Describe a site as a map of places, let an author edit its records from the OS console, and render them with search and sharing metadata the CMS writes for you.
-
Reactive AI Task
Submit a task and watch the AI pipeline stages reveal one by one as the cron job processes it.
-
UI Primitives
The atomic ui="..." vocabulary -- buttons, form controls (input, select, textarea, checkbox, radio, switch, segmented), display pieces (badge, alert, avatar, spinner, progress, meter, skeleton, divider, description list, tag, kbd) and icons -- the tokens and skins behind them, and the attribute-driven runtime.
-
UI Behaviors
Client-only interactions bound by markup with ui-behavior: menu, dropdown, modal and more, on native popover and anchor positioning, keyboard and ARIA included.
-
UI Composition: UiPart and UiSlot
How a component declares the primitives it is made of, how part props resolve, and how bind, slots and inputProps behave.
-
UI Workbench
A dev page that renders every primitive, component and behavior from its declared examples, with props, slots, Twig, skins and dark mode, audited in a browser.
-
UI Events and Transport
Declaring events with UiOn, the signed render-time manifest, the capture-only frontend runtime, the HTTP dispatch endpoint and the SSE push channel.
-
UI Forms
Composing platform.form, the authoritative submit pipeline, per-field signed projection and the playground.
-
UI Grammar Reference
The attribute grammar a component author writes: what each attribute means and where it is allowed.
-
UI and SSR Integration
How platform-ui primitives and components sit on top of the SSR module.
-
Twig Template Cache
How the Twig cache behaves under long-running workers and when you need to clear it.