Marketplace
The Marketplace is the tenant-facing catalog of published solutions. Publishing writes to the catalog; installing binds a version into a workspace.
Publisher (platform admin today)
→ qefro solution publish
→ global catalog (solution-service)
→ Admin Console → Applications → Marketplace
→ Install wizard → workspace binding + /qefro
For tenants (installers)
- Open Applications → Marketplace in the Admin Console (
app.qefro.com). - Pick a solution (e.g. Restaurant Pro, Clinic Pro, or your published app).
- Run the install wizard: workspace, settings, optional onboarding steps.
- Connect Settings → Customer channels (WhatsApp) when the app needs chat.
- Open the solution UI from Installed.
CLI equivalent (automation / ops):
export QEFRO_SOLUTION_URL=…
export QEFRO_TENANT_ID=…
export QEFRO_ORGANIZATION_ID=…
qefro solution install <solution-id> --version <semver>
Full install contract: Installation.
What installers never do
- Publish or yank catalog versions
- Call solution-service internal APIs from the browser
- Configure WhatsApp as an install setting (workspace owns the channel)
For publishers
Today the publisher identity is a platform admin UUID listed in
QEFRO_PLATFORM_ADMIN_IDS. Partner self-serve listing is on the roadmap;
until then, use Publishing with provisioned keys.
Listing checklist
| Requirement | Why |
|---|---|
Unique manifest.id + semver version | Catalog key |
| Valid signed package | Trust anchors |
src/ + /qefro | ADR-003 — the app is the process |
No storage/* in workflows/UI | Rejected at validate/publish |
| Onboarding YAML for every declared step | Publish validation |
| Honest settings defaults | Install wizard |
Managed image or reachable external /qefro | Runtime binding |
Upgrade path
Publish a new version → tenant upgrades from Installed (or
qefro solution install … --version). Versions are immutable; yank only for
severe issues (Publishing).
Applications Health
Admin Console → Applications → Health (and Capability Explorer) show whether installed apps registered Marketing / Organization capabilities and whether bindings are healthy. Use this after install to confirm the package synced metadata — not to debug tenant business data.