Vapor
DOSS app builder platform. Composable, generatable applications from ZSL declarations.
Vapor takes a ZSL declaration of an application and generates the running user-facing applet: data model, forms, dashboards, API endpoints, workflow triggers, validations, and agent harnesses. The data model is rigid; the applet is disposable. Re-generate any time ZSL changes.
One ZSL → full applet
Data model
Typed GraphQL schema and client over the DOSS API. Queries and mutations match the ZSL Projections and Workflows.
Forms and detail views
Auto-generated from schema + validation rules. Context-aware defaults — a date column gets a date picker, an enum gets a dropdown, a lookup gets a relationship chip.
Dashboards
Layouts composed from json-render primitives. Driven by Projections; editable by both humans and agents.
API endpoints
GraphQL over HTTPS. Admin and App surfaces with separate tokens; tenant scoping baked in.
Workflow triggers
UI buttons and automations wire directly into ZFlow durable executions.
Agent harnesses
Each applet ships with a `/api/chat` endpoint that streams Claude responses with json-render specs. The agent and the human both edit the same applet.
Stack
Three shared packages, N applets
- 01
@doss-vapor/client
Typed DOSS GraphQL client. Universal (Node + browser). Handles admin and app tokens transparently.
- 02
@doss-vapor/tools
Vercel AI SDK tool definitions for agents. Server-only. What the `/api/chat` endpoint registers.
- 03
@doss-vapor/vapor
React hooks (`useTable`, `useRows`), json-render catalog, theme. Browser-only. What applets import.
In the stack
ZSL's Interface layer is the Vapor input format.
Generated forms and dashboards read/write through the GraphQL client that sits on ZebraDB.
Tabular views in generated applets use DossGrid over FlightSQL.
Whatever module graph TetrisUI composes, Vapor renders.