Marketplace
apps.saaslivery.com is where workspace admins discover and install apps, and where developers publish and monetize their own.
User roles
| Role | What they do |
|---|---|
| Visitor | Browses app listings, reads descriptions and reviews |
| Workspace Admin | Installs and uninstalls apps, manages billing |
| Developer | Publishes apps, manages listings and revenue |
| Platform Admin | Reviews submissions, manages policies |
App listing
An app listing is built from the manifest plus marketplace-specific fields:
| Field | Source | Description |
|---|---|---|
| Name | manifest.name |
Display name |
| Publisher | manifest.publisher |
Developer or company |
| Description | manifest.description |
Short description (200 chars) |
| Long description | Marketplace submission | Markdown, max 5000 chars |
| Category | manifest.category |
Primary category |
| Tags | manifest.tags |
Searchable tags (max 10) |
| Version | manifest.version |
Current version |
| Pricing | manifest.pricing |
Free, freemium, or paid |
| Dependencies | manifest.requires |
Shown as "Works with..." |
| Screenshots | Marketplace submission | Up to 5 screenshots |
Categories
productivity, communication, finance, hr, development, analytics, other
Installation flow
1. Admin clicks "Install"
2. Platform checks:
- Are required dependencies installed?
- Is there a slug conflict?
- Does the billing plan allow this app?
3. If dependencies are missing:
→ "This app requires [People]. Install it first?"
→ Option to install the dependency chain in one click
4. If checks pass:
a. Run plugin.install(host_app)
b. Emit system.app.installed event
c. The app's tile appears in the workspace launcher
d. Members open it at {workspace}.saaslivery.com/app/{slug}/
New installs start rolled out to nobody: only owners and admins can open the app until an admin grants roles access. See Security & permissions.
Uninstallation flow
1. Admin clicks "Uninstall"
2. Platform checks:
- Do other installed apps depend on this one?
→ If yes: "Cannot uninstall. [Vacations] depends on [People]."
3. If safe:
a. Run plugin.uninstall(host_app) if defined
b. Emit system.app.uninstalled event
c. Remove the app's launcher tile and tabs
d. Data retained for 30 days, then purged
Discovery
- Full-text search across names, descriptions, and tags
- Category browsing
- Featured — curated by platform admins
- Most installed — ranked by install count
- Works with {app} — apps that integrate with a specific installed app
- New — recently published
Reviews and ratings
- Workspace admins can leave reviews (1-5 stars + text)
- One review per workspace per app
- Developers can respond to reviews
- Reviews are moderated for abuse
Publishing
Third-party apps are submitted via GitHub. See Publishing Your App for the full developer flow.
Why GitHub?
- Code review — platform team sees every line before deployment
- CI/CD — automated validation of manifest, table count, event naming
- Audit trail — full git history of every app version
- Rollback — revert the submodule ref
- Developer isolation — each developer owns their own private repo
Versioning and updates
- Developers publish new versions via the developer portal
- Workspace admins see an "Update available" badge in
account.saaslivery.com - Updates run
plugin.upgrade(host_app, from_version)if defined - Breaking changes (major version) require admin confirmation
- The platform can force-update for security patches
Semver rules
| Change | Version bump |
|---|---|
| Breaking changes to event payloads | Major |
| New events or payload fields | Minor |
| Bug fixes | Patch |