Skip to main content

App scaffold

Prefer the full walkthrough

Primary path: Build your first app (qefro app init restaurant-pro). This page covers ownership + generated layout. The shorter Quickstart assumes you already have publish credentials.

Ownership model

Tenant
└── Workspace
├── Channels (e.g. WhatsApp — owned by the workspace)
└── Application (one primary installable app per workspace)
LayerOwnsNotes
TenantOrg, users, billingPortal login boundary
WorkspaceChannels + one primary appWhatsApp number binds to the workspace, not the package
ApplicationMetadata package (entities, flows, UI)Shared catalog package; per-workspace install + settings. Qefro Runtime executes it.

Installing a second primary app into a workspace that already has one is rejected. Channel digits (?n= on booking links) come from the workspace WhatsApp binding — do not put whatsapp_business_number in install settings.

See Architecture and Installation.

Create an app (default — metadata)

qefro app init restaurant-pro --name "Restaurant Pro"
cd restaurant-pro
qefro app validate .

(qefro app init aliases qefro create-app.)

Generated layout

restaurant-pro/
├── manifest.yaml # id, version, hosting: runtime, entities, flows, events
├── entities/ # required — domain schemas
│ └── record.yaml
├── workflows/ # Business Flows → FlowRunner
│ └── create-record.yaml
└── ui/
├── navigation.yaml
├── pages.yaml
├── widgets.yaml
└── sources.yaml # type: entity

No src/, no Dockerfile, no /qefro endpoint.

Reference verticals

AppDocsPath (platform repo)
Restaurant Pro Runtimeexampleapps/restaurant-pro-runtime/
Real Estate Runtimeexampleapps/real-estate-runtime/
Shopify Runtimeexampleapps/shopify-runtime/

Trees live in qefro-marketplace-apps.

SDK connection scaffold (not a Marketplace App)

Use this only to connect an external ERP, POS, or CRM:

qefro create-app my-erp --hosting external --endpoint https://api.example.com/qefro
qefro create-app my-erp --hosting external --minimal # hello-only SDK stub

export QEFRO_APP_TEMPLATE=/path/to/templates/sdk-app-starter

That copies templates/sdk-app-starter (src/ + /qefro). This is not how you build Restaurant, Clinic, or Real Estate Marketplace Apps.

See External SDK Connection.

From scaffold to live

  1. Edit entities, workflows, and UI YAML.
  2. qefro app validate .
  3. qefro app package . — validate + sign.
  4. Platform admin publishes — see Publishing.
  5. Tenant installs into a workspace — see Installation.
important

Tenants and workspace admins install apps. Only platform admins publish versions into the global catalog.