Architecture & data flow
Nuxt, validated APIs, and a visitor-owned snapshot.
Architecture & data flow
Layers
- Nuxt pages and layouts provide real routes and the workspace shell.
- Shared TypeScript records and Yup schemas connect the client and server.
- Nitro handlers generate fixtures and validate proposed changes.
- The useDemo composable owns reactive visitor state and derived views.
- A client plugin restores and persists the validated browser snapshot.
First render
The bootstrap endpoint supplies a deterministic seed through useAsyncData. After hydration, the client restores its snapshot. Browser-created record routes wait for restoration before deciding that a record is missing.
Mutations
Each editor sends a proposed record with reference context. The server validates and returns the canonical result. Only a successful response changes local state. The composable updates activity and notifications alongside the record.
Reset
Reset aborts pending mutations and increments a revision. Results from an earlier revision cannot change the fresh workspace.
Reporting
Performance samples are linked to campaigns. Shared aggregation functions power charts, tables, and exports. Archived campaigns retain their historical samples.