The sync engine pointed straight at the browser
Let a client choose its own tables and filters and one missing check streams every project to whoever asks. Here the browser sends a feed name and nothing else; the query is built on the server.
De wijziging van een collega landt op jouw scherm, en alleen op schermen die het mogen zien.
Documenten, taken, formulieren, automatiseringen, projecten en de voortgang van lange taken stromen naar elk open scherm zodra ze veranderen. Je drukt niet op verversen, en niemand schrijft pollingcode. Elke stroom wordt door de server geopend tegen een vaste tabel, vaste kolommen en ons eigen project, dus een feed kan nooit verder reiken dan de persoon die kijkt.
0
query details accepted from the browser
5 min
before a stream must prove access again
10
named feeds in the server-owned registry
Zonder een gedeelde basis bouwt elk team deze randgevallen opnieuw, en anders.
Let a client choose its own tables and filters and one missing check streams every project to whoever asks. Here the browser sends a feed name and nothing else; the query is built on the server.
Access was checked once, when the stream opened, and their tab is still receiving updates. Access checked once is access that never expires. Five minutes is the longest that can last here.
A slightly stale update lands over a fresh edit, then the real one arrives and the text visibly changes twice. People read that flicker as lost work, and they are not always wrong.
Het mechanisme van begin tot eind, zoals het in de repository is geïmplementeerd.
The browser asks by name
The client requests a named feed along with the organization and project it believes it is in. All of it is validated before anything else runs.
The server checks membership
Your session and role are verified, and a requested project is checked against the organization that claims it. A failure returns an error, never rows.
The server builds the real query
Table, columns and filters come from a server-only registry, and the sync secret is attached server-side. None of it is visible to the page.
Updates settle in order
Each save returns the PostgreSQL transaction ID it committed under. The screen holds your instant change until that exact transaction arrives.
Interactief voorbeeld
Deze rondleiding toont het geïmplementeerde backendcontract zonder account, credentials of providercalls.
Interactief voorbeeld
Stap 1 van 4: Optimistic update
Alleen deterministische voorbeelddata. De interactie gebruikt geen account-, provider- of netwerkverbinding.
Kernpunten
The browser asks for a feed by name. Which table, which columns and which filters that name means is decided by a server-only registry.
Streams are cut at five minutes and must re-prove membership to continue. Someone removed from the project loses the feed at the next check, not whenever they close the tab.
Your change appears at once, then waits for the exact database transaction that saved it before settling. A slightly older update cannot win.
Technische garanties
Growth Kit-records staan vandaag niet op de live stroom. Accounts, gesprekken, besluiten, campagnes en financiële posten verversen bij de volgende leesactie, niet op het moment dat een collega opslaat. Tien feeds stromen live: documenten, formulieren, automatiseringen, projecten, organisaties, contentbuckets en -items, variabelen, en procesruns en mijlpalen.
De grens hierboven is geen claim maar code. Deze bestanden dragen het contract:
src/routes/api/electric.tssrc/realtime/server-proxy.tssrc/realtime/registry.server.tsDeze functies delen contracten en grenzen met deze pagina.
De documentatie beschrijft dezelfde contracten die deze pagina demonstreert.