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 | shared/, library/, and each unique page-level custom body |
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 installs on your bound store (pins store.templateId and the release, writes
live templateData). With no flag the CLI asks, and Enter does not install. --yes
alone does not install either. Existing installs keep their current version until
something installs the new release. The developer loop is
Develop and publish.
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.