Solution Development
Solution Development is how you build complete, branded business applications on Qefro: a restaurant manager, a clinic front desk, a real estate CRM, a booking product — shipped as a single installable package.
A Qefro Marketplace App is a declarative package, not an SDK server. Developers do not need a backend to create Restaurant, Clinic, Real Estate, Booking, or CRM apps. Qefro Runtime executes the metadata: UI, entities, storage, Business Flows, Business Events, CRM, and Automation.
Default developer story:
Developer → Create App Metadata → Validate → Package → Publish
→ Install into Workspace → Qefro Runtime
qefro app init restaurant-pro
qefro app validate restaurant-pro
qefro app package restaurant-pro
qefro app install restaurant-pro
Start here: Build your first app
using restaurant-pro-runtime.
Build a Qefro Marketplace App with metadata. Use the SDK only to connect an external ERP, POS, or CRM. See Runtime vs SDK.
What is a Qefro Marketplace App?
An installable YAML package with hosting: runtime. Identity, entities,
workflows, events, UI, and permissions live in the package. After install,
Qefro Runtime:
- renders dashboards, tables, forms, detail pages, navigation, and widgets
- persists entities in managed storage (no direct DB)
- compiles
workflows/into the same BusinessFlow / FlowRunner as every other flow - emits business events that CRM Automation can consume
- hosts Contacts (
host: contacts) and Automations (host: automations)
You never run npm run dev on a /qefro process for this path.
What you can build
Any business domain that fits entities + flows + UI:
| Domain | Typical pages | Data plane |
|---|---|---|
| Restaurant | Dashboard, reservations, tables, menu | Runtime entities + managed storage |
| Clinic | Appointments, patients, schedule | Runtime entities + managed storage |
| Real estate | Properties, leads, viewings | Runtime entities + managed storage |
| Commerce | Products, customers, orders | Generic Runtime HTTP (Shopify) or entities |
| CRM / booking | Pipeline, contacts, bookings | Runtime entities + Person CRM |
Canonical references:
| Package | App id | Role |
|---|---|---|
| restaurant-pro-runtime | restaurant-pro-runtime | Hospitality metadata app |
| real-estate-runtime | real-estate-runtime | Same model, different nouns |
| shopify-runtime | shopify-runtime | Commerce metadata + generic Runtime HTTP |
Collection repo: qefro-marketplace-apps (index).
SDK-hosted Marketplace examples (restaurant-pro, clinic-pro,
salon-pro) were removed. Build those products as metadata, or
connect a real external system with the SDK.
Core principles
- Metadata is the application.
hosting: runtimepackages shipmanifest.yaml,entities/,workflows/, andui/. No SDK process. - UI is declarative data. Theme, nav, pages, and widgets are YAML — no package JS in the portal UI (no iframes, no injected scripts).
- Storage is Qefro-managed. Entity tools such as
entity.reservation.createpersist documents. No Mongo connection, no directstorage/*from YAML. - Flows compile to FlowRunner.
ask→tool→condition→approval/challenge→completeon the same engine as every Business Flow. - Capability mediation is mandatory. Host interactions pass through the capability registry.
- Event-driven communication is mandatory. Business events drive
automation;
ui.*events are observational.
Platform rules
These rules are enforced at publish time and at render time. Packages that violate them are rejected:
| # | Rule |
|---|---|
| 1 | No arbitrary JavaScript |
| 2 | No direct DOM access |
| 3 | No iframe execution |
| 4 | No direct database access |
| 5 | No direct Redis access |
| 6 | No direct network access |
| 7 | Capability mediation is mandatory |
| 8 | Event-driven communication is mandatory |
See Security model for how each rule is enforced.
The delivery pipeline
| Stage | Responsibility | Details |
|---|---|---|
| App package | Metadata: manifest, entities, workflows, UI | Package structure |
| Registry | Signed global catalog (platform-admin publish only) | Publishing |
| Installer | Activation, capabilities, workspace install | Installation |
| Qefro Runtime | UI, entity tools, FlowRunner, events | Architecture |
| Managed storage | Documents for declared entities | Managed storage |
| Portal renderer | Dashboards, tables, forms, widgets | Pages |
External ERP / POS / CRM integrations take a separate path: SDK →
/qefro → Runtime. See Runtime vs SDK.
Package structure
Prefer qefro app init <id>. The implemented tree
(from restaurant-pro-runtime / qefro app init) is:
my-app/
├── manifest.yaml # identity, hosting: runtime, entities, flows, events, UI, permissions
├── entities/ # domain schemas (required for hosting: runtime)
│ └── record.yaml
├── workflows/ # Business Flows → FlowRunner
│ └── create-record.yaml
└── ui/ # Runtime-rendered staff UI
├── theme.yaml
├── navigation.yaml
├── pages.yaml
├── layouts.yaml
├── widgets.yaml
└── sources.yaml # type: entity | runtime
There is no src/, no events/ directory, and no automations/
directory. Events are declared on the manifest (events:). Automations
are a portal host page (host: automations), not package files.
YAML is assembled into a canonical JSON package, checksummed and signed — see Packaging.
Documentation map
| Topic | Page |
|---|---|
| Runtime vs SDK (read this) | Runtime vs SDK |
| Build your first Marketplace App | Build your first app |
| Platform architecture | Architecture |
| Tenant-side activation | Installation |
manifest.yaml reference | Manifest |
| Branding | Themes |
| Sidebar + routes | Navigation |
| Pages & layouts | Pages · Layouts |
| Widgets | Metric · Table · Chart · Markdown · Form · Timeline |
| Host capabilities | Capabilities |
| Event model | Events |
| Data sources | Sources |
| Managed document storage | Managed storage |
| Images & branding files | Assets |
| Connector dependencies | Connectors |
| Workflow definitions | Workflows |
| Publish-time checks | Validation |
| Building a signed package | Packaging |
| Publishing to the registry | Publishing |
| Security model & rules | Security |
| Fixing common failures | Troubleshooting |
| Canonical metadata app | restaurant-pro-runtime |
| Second vertical | real-estate-runtime |
| Commerce metadata app | shopify-runtime |
| SDK-hosted packages (not default) | Managed apps |
How this differs from playbooks
Solution playbooks are outcome-oriented guides that compose existing platform features (customer support, order tracking, refunds). Solution Development produces new installable packages with their own manifest, entities, UI, and workflows.
Related platform concepts
- Runtime — the execution engine that runs installed workflows.
- Events — the platform event bus that solutions ride.
- Managed storage — document plane for declared entities.
- Connectors — stateless integration containers behind the bridge.
- Business Flows — the flow model workflows compile to.
- External SDK Connection — ERP / POS / CRM → SDK →
/qefro.