Build my app
Say "build the app my customers sign in to" and get an App with a screen per kind of record, a form per action, sign-in and a workspace per customer.
Your App is built from the Software you sell and the people who sign in, and ships to every customer at once. Each kind of person is a Persona.
Needs Startup
What you get
- 1product your customers useSoftware
- 1app at app.leaseline.app, under your brandApp
- 1profile per kind of person who signs inPersona
- 1list and detail screens for each kind of record a person may readDashboard
- 1form for each action a person may takeFlow
- 1access rule behind every buttonRole
- 1Markdown and JSON form of every screen, for agentsDashboard
- 1install from the browser on any phoneApp
Your agent does
You, to your agent
Build the app my property managers sign in to.
Give each customer a dashboard of their leases and renewal dates.
Make an app where a manager sees which renewals are due this month.
# 1. Software.create
curl -X POST https: //api.sb/ leaseline.app/ software \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Leaseline", "promise": "Every lease renewal date in one place, with a reminder 90 days out."}'
# Look up the Interface: Interface.list
APP= $(curl "https: //api.sb/ leaseline.app/ interfaces? where= kind%20%3D%20app& limit= 1" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" | jq -r '.interfaces[0]["$id"] | split("/ ") | last')
# 2. App.publish
curl -X POST https: //api.sb/ leaseline.app/ apps/ $APP/ publish \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'
await $.Software.create({ name: 'Leaseline', promise: 'Every lease renewal date in one place, with a reminder 90 days out.' })
const [app] = await $.Interface.list({ where: 'kind = app', limit: 1 })
await $.App.publish({ app: app.$id })
npx startup-builder do Software.create --json '{"name": "Leaseline", "promise": "Every lease renewal date in one place, with a reminder 90 days out."}'
APP= $(npx startup-builder do Interface.list --json '{"where": "kind = app", "limit": 1}' | jq -r '.interfaces[0]["$id"] | split("/ ") | last')
npx startup-builder do App.publish --json '{"app": "'"$APP"'"}'
{
"name": "do",
"arguments": {
"code": "await $.Software.create({ name: 'Leaseline', promise: 'Every lease renewal date in one place, with a reminder 90 days out.' })\nconst [app] = await $.Interface.list({ where: 'kind = app', limit: 1 })\nreturn await $.App.publish({ app: app.$id })"
}
}
Change it
- Add an owner view that shows every property at once.
- Hide rent amounts from the maintenance Persona.
- Add a renewal calendar to the home screen.
Under the hood
- Systems
- Customer access, Sites
- Nouns
- Software, App, Persona, Role, Permission, Dashboard
- Events
Software.created,App.published