Skip to content

Apps

An app folder is one App over the Startup's Nouns, its kind, its Personas and what each may call.

A folder in apps/ is one App: a kind, the Personas who use it, and what each may call. Its screens derive from the Nouns it mounts, as the app product describes.

  • apps/portal/
  • app.mdxkind, mount, Personas
  • leases/[lease]/view.mdxreplaces one derived screen

Reference

app.mdx is frontmatter only.

KeyTypeHolds
kindsaas | admin | directory | commerceThe App's shape
mountpathWhere it serves; /app by default, /admin for admin
nounsNoun namesThe Nouns it shows
personasmapEach Persona and the Verbs it may call

Examples

Minimal

apps/portal/app.mdx
---
kind: saas
nouns: [Lease]
---

Leaseline

Leaseline declares a Lease Noun. Managers run every Verb; residents only read and answer.

apps/portal/app.mdx
---
kind: saas
mount: /app
nouns: [Lease]
personas:
  manager: { may: [Lease.create, Lease.renew, Lease.notify] }
  resident: { may: [Lease.get] }
---

What it builds

The SoftwareBuilder compiles the folder and publishes it with App.publish.

  • an App with a list and a detail screen per Noun, and a form per Verb a Persona may call
  • an inbox of the Tasks waiting on the signed-in person
  • authorization before any screen renders, from the Personas map
  • the Event App.published

Routing

PathScreen
/app/leasesThe list
/app/leases/{lease}One record
/app/leases/{lease}/renewThe form for Lease.renew

The same URL returns HTML, JSON or Markdown, by reader.

Good to know

  • A derived screen is replaced one at a time with a view; the rest keep deriving.
  • The customer portal is an App of kind saas with a customer Persona; see portal.