Marketplace
Publish templates, cut releases, sell paid listings, and manage licenses, reviews and earnings.
Publishing puts your template in the marketplace where merchants browse, install, and — for paid listings — buy with their Feeef wallet.
What a publish writes
One feeef template publish updates several resources:
| Resource | Content |
|---|---|
store_templates | The listing: metadata + head schema/data + price |
store_template_releases | Immutable semver snapshot + changelog per publish |
template_components | Your shared/ + library/ components |
store_template_locales | One row per language from dist/locales/*.json |
# Free listing
feeef template publish --public --apply
# Paid listing
feeef template publish --public --price 5000 --version 1.2.0 \
--changelog "Fix PDP gallery + RTL" --apply--apply additionally installs on your bound store (pins store.templateId +
release, writes live templateData). Without it, existing installs keep their current
version until the merchant updates.
Listing management
Authors can edit listing metadata anytime (PATCH /store_templates/:id):
| Field | Notes |
|---|---|
title, subtitle, body | Shown in Browse and on the detail page |
imageUrl, screenshots, demoUrl | Cover, gallery, live demo link |
category, tags | Discovery |
price, discount | DZD; 0 = free. Price changes never rebill past buyers |
policy | public / unlisted |
salesClosed | Stop new purchases; existing licenses keep install/reinstall |
Admin-only: featured, moderationStatus (approved / pending / rejected — rejected
listings are hidden from the public index).
Paid templates
- Prices are one-time, per store, paid from the merchant's wallet.
- The platform takes a configurable cut (default 30%); the rest lands in your wallet.
Track it via
GET /store_templates_earningsor the merchant app's earnings screen. - Ownership (
store_template_licenses) is per store and forever: reinstall and updates are free, and the cut is snapshotted at purchase time. - Buyers get a working copy on install — paid listings cannot be forked into a new catalog row.
Merchant states: Free → Install · Paid → Buy → Owned → Install · Owned + newer release → opt-in Update.
Marketplace API
| Method | Path | Purpose |
|---|---|---|
GET | /store_templates | Browse (paginated; pass storeId for enrichment: owned, effectivePrice, updateAvailable, ratingAvg…) |
POST | /store_templates/:id/purchase | Wallet purchase → license |
POST | /store_templates/:id/install | Install (optional releaseId) |
GET/POST | /store_templates/:id/releases | List / create releases |
GET | /store_templates/:id/releases/:releaseId | Release detail |
GET | /store_templates/:id/releases/:releaseId/render | Render a historical release |
GET/POST | /store_templates/:id/reviews | Reviews — { storeId, rating 1–5, body? }, requires a license |
GET | /store_templates_earnings | Author earnings |
SDK: feeef.storeTemplates.* (JS) / Feeef.instance.storeTemplates (Dart).
Release preview links
Any shop can preview any release without touching its live theme:
https://{slug}.feeef.store/?templateId={listingId}&templateRelease={releaseId}Exit with /?templateRelease=0. Useful for demo links on your listing page.
Reviews and ratings
Merchants with a license (or the author) can post one review per store; ratingAvg and
ratingCount are denormalized onto the listing for browse sorting.