App definition
The typed keys of an App's definition file, each linked to the page that explains it, with Leaseline's App as the example.
An App is declared in one file in its folder, apps/, and a Product sells it by naming App in its $type. A wrong key or value fails its check before it compiles.
Keys
apps/ declares one App. Frontmatter only.
| Key | Type | Required | Holds |
|---|---|---|---|
kind | saas | admin | directory | commerce | The App kind; saas when unset | |
mount | path | Where it serves on the Domain; /, or / for admin | |
nouns | Noun names | required | The Nouns it shows, a list and a record screen each |
personas | map | Each Persona who signs in | |
personas.*.may | Verb ids | The Verbs that Persona may call; each one is a button and a form | |
slots | map | A Component per slot: list.toolbar, list.empty, record.header, record.aside, record.actions, record.tab, form.after, dashboard.section |
---
kind: saas
mount: /app
nouns: [Lease]
personas:
manager: { may: [Lease.create, Lease.renew, Lease.notify] }
resident: { may: [Lease.get] }
slots:
record.aside: Timeline
---What it builds
SoftwareBuilder compiles the file into the parts the App's anatomy lists: screens, the API and packages, each Tenant, sign-in, plans and the admin App. App.publish serves the result.
Good to know
kindtakessaas,admin,directoryorcommerce; App kinds says what each adds.- Every App gets an
adminApp beside it; declare one only to change it. - A view override replaces one screen, and a slot replaces one part of a screen.