Skip to main content
You build it by describing what you want to an agent through the Zite MCP; the code below is what it generates.

Describe the app

Data model

Contacts and Deals (linked to contacts), plus an optional Activities log. Field/table names become SDK names in code (Dealszite.Deals, “Close date” → closeDate); ownerEmail is what row-level permissions key off. See Databases.

Workflows

One file per workflow in src/api/ — list deals, and move one through the pipeline:
The KPI row sums deal value per stage — a group-by, so use zite.sql(); aggregating over a capped findAll undercounts (database client):
Add workflows, then run npx zitejs generate so the typed frontend client picks them up. See Workflows.

Frontend

A KPI row over a drag-and-drop pipeline board, calling workflows through the generated zitejs/api client:
PipelineBoard groups listDeals by stage into columns and calls moveDeal on drop (persist optimistically). Full drag pattern: Kanban recipe.

Permissions

Reps see only deals they own; managers see everything. Because each deal carries ownerEmail, a rowFilter comparing it to the signed-in user does the job:
The rowFilter scopes each rep to their own deals via userField: "email"; the Sales manager role gets unfiltered access. defaultPolicy: "deny" leaves Activities locked until you add rules. See the permissions model and file schema.

Publish

Ask the agent to Publish the app. Internal apps go live to your team; external apps get a zite.so URL with sign-in. See Publishing.