App
An App is an Interface where people work with a Product’s Nouns and Verbs through screens, backed by its API.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
personas | list of Persona | The Personas it serves. | |
views | list of Dashboard | Its Dashboards, compiled by default from the Persona’s Role: a list and record per Noun, a form per Verb. | |
slots | json | Named places where a Component replaces a default part, such as a record header or the ask control. |
Inherited from Interface: 3 properties
| Property | Type | Required | Description |
|---|---|---|---|
kind | string | required | One of api, mcp, cli, sdk, site, app, docs, or webhooks. |
path | string | Where it is mounted on its Domain, such as /. | |
conformsTo | json | The Standards it also speaks, each mapping the Standard’s operations onto the Product’s Verbs. |
Object
{
"$id": "https: //api.sb/ routewise.dev/ apps/ app_1",
"$type": "App",
"kind": "api",
"path": "/",
"conformsTo": {
"standard": "openai-chat",
"operations": {
"chat.completions.create": "Listing.write"
}
},
"personas": [
"persona_1"
],
"views": [
"dashboard_1"
],
"slots": {}
}Relationships
- An App guides many Flows: the Flows an App runs on first sign-in, one per Persona and Offer, each ending at the activation Event.
guides, inverseapp. - An App presents many Dashboards: an App opens on Dashboards for the people signed in to it.
presents, inversepresentedIn.
Verbs
publishPublish releases an App to its Customers, so each Tenant runs its newest build.POST /{namespace}/apps/{app}/publish
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
App.publish | Yes | Yes | Yes | No |
Call it
Publish the app “Grain-free kibble, 12 lb”.Example
The App of an invoicing Software Product shows each Invoice on a screen with bill and void buttons. Each button calls the same API a script calls.