One page, then the owners.
A screen is an HTML document plus a small script. The script calls a verb. DataProvider is the only path to HTTP, and Interceptor is the only fetch. LiveProvider owns the socket and does not go through that fetch. Both paths publish an event. Bind paints the HTML that was already on the page.
HTML page
The document for this URL. English, links, and fields live here. Navigation is a real link.
Page script
A gesture calls a verb. The script subscribes. It does not call fetch, and it does not construct a WebSocket.
DataProvider
One resource. load, create, save, remove. SessionProvider is a DataProvider whose payload includes roles.
Interceptor
The only fetch. A request hook sets a header. redirectOnStatus sends 401 and 403 to HTML pages.
HTTP
The API. The app owns the JSON. The kit does not ship a schema.
LiveProvider
The socket for a live page. connect, send, close. A send while the socket is down is dropped.
WebSocket
Not fetch. Credentials go on the socket URL, or in the first message. Interceptor does not see this traffic.
Same event
A live message with data replaces the payload. There is no merge and no client store beside the provider.
subscribe
data, status, and error. One event for this page. Widgets hear it through Pub/Sub. They do not ask the network themselves.
Bind
bindText, bindField, and bindList write the DOM. bindField is two-way on a top-level key. Submit still calls create or save.
The same HTML page
The paint lands in elements that were already in the document. First paint does not wait on JSON.