Subscribe to a view. Get live updates. Zero boilerplate. Arcana syncs your PostgreSQL data to any frontend through normalized diffs — one record changed, every display updated.
One record, one source of truth, 100 display locations. Change a company name once — every view using it updates instantly via reactive proxies.
table_diff for data changes (broadcast to workspace), view_diff for structural changes (private per session). Minimal traffic, maximum precision.
Centrifugo, raw WebSocket, SSE — swap via interface. Batch publishing, retry with backoff, disconnect management built-in.
Column-level filtering. Only re-compute views that depend on changed columns. Explicit notify, pg_notify, or WAL — your choice.
No subscribers on a row? Auto-evicted. No memory leaks, no unbounded growth. Seance dies — all subscriptions cleaned up.
Graphs are the security boundary. No graph, no data. Factory functions = authorization logic. 409 masking hides resource existence.
IndexedDB adapter. Load from cache when offline. Reconnect with version vectors — get only what changed. Zero data loss.
Auto-generated tables.d.ts + views.d.ts. Full type safety from Go graph definitions to Svelte components.
Querier interface decouples from pgx. Mock everything. 100+ tests with race detector. Integration tests with testcontainers.
Three lines to connect Arcana to your existing Go application. Bring your own PostgreSQL pool, pick a transport, define auth.
A graph is a named query with dependencies. Plain Go — no DSL, no YAML, no magic.
One line. No event listeners. No manual refetching. Data arrives as normalized diffs — Svelte 5 applies them with zero full re-renders.
Call engine.Notify() after mutations. Simple, full control.
Auto-generated triggers. Zero app instrumentation after setup.
Logical replication stream. Captures all DML. Most reliable.
All endpoints require authentication via AuthFunc. Responses use the envelope format.
getRow(table, id) for any row across viewscreateSubscription() with $state reactivitygo run ./cmd/arcana-gen generates tables.d.ts + views.d.tsType-safe parameter definitions with validation. Identity context in every factory for authorization.
Get running in 5 minutes. Install, define a graph, subscribe from frontend.
table_diff, view_diff, subscribe, sync — the complete protocol specification.
How graphs enforce access control. AuthFunc, Factory permissions, 409 masking.
Every type, method, and option. GraphDef, ParamSchema, Transport, Config.
Client, Svelte adapter, IndexedDB storage, codegen output.
Basic setup, pg_notify, Centrifugo full stack, offline mode.