Skip to content
All guides

Under the surface

SSR, local state, validation, and deployment.

Engineering

Nuxt from end to end

Nuxt 4 renders the seeded workspace on the server through useAsyncData. A client plugin restores a validated, versioned localStorage snapshot after hydration. Routes that depend on browser-only records show a loading state until restoration finishes.

Two kinds of storage

Text records live in localStorage. Blob data lives in IndexedDB through idb. When storage is unavailable, the active session continues in memory with visible save feedback. Workspace IDs isolate local edits.

Predictable demo data

Faker is imported only in server utilities. Metadata is reproducible; replies and transcripts are written by hand. Shared TypeScript models and Yup schemas define API boundaries.

Interaction and accessibility

UI Thing components use Reka UI primitives. The shell offers keyboard navigation, a command palette, visible focus, responsive drawers, light and dark themes, and reduced-motion support. Charts load on demand and include a text table.

Delivery

Bun manages dependencies and scripts. Node runs Nuxt builds and the server. Oxfmt formats Vue and TypeScript; Oxlint checks scripts, and Nuxt typecheck checks types. Vitest and Playwright cover validation, APIs, persistence, media cleanup, and key browser flows. Netlify uses Nitro server functions so demo APIs remain available.