Marketplace Overview

The SCRIPE Marketplace — ecosystem of installable apps, categories, developer profiles, and the entity map for all 13 domain entities.

The Marketplace module powers SCRIPE's app ecosystem: developers publish plugins as commercial listings, tenants browse and purchase them, and the platform enforces a multi-stage review pipeline before any app goes live. This page covers the full entity map and the two organizational entities — AppCategory and AppCategoryMapping.

Marketplace AreaCurrent StatusTruth Boundary
Listings, categories, developer profiles, submissions, and reviewsBackend entities and APIs existOperationally useful but still needs production hardening
Purchases and pricingBackend model existsDo not claim complete production commerce without payment and payout verification
Developer payoutsSimulated payout handler still existsNot production-ready settlement
Plugin ecosystemDepends on Plugins moduleNo claim of arbitrary-code sandboxing

Key Capabilities

  • App Publishing

    Developers create AppListings that link PluginDefinitions to a storefront presence with name, tagline, screenshots, and pricing.

  • One-Click Install

    Tenants browse the catalog, purchase or trial apps, and trigger plugin installation in a single flow.

  • Ratings & Reviews

    Users submit 1–5 star ratings with review text. Developers can reply once per review. AverageRating is denormalized on AppListing for fast catalog queries.

  • Flexible Pricing

    Six pricing models: Free, PaidOnce, Subscription, Freemium, PerSeat, UsageBased — all configured via AppPricing with trial-day support.

  • Install Analytics

    Daily AppInstallCount snapshots power developer dashboards showing install trends, growth rates, and active install counts.

  • Submission Review Gate

    Every new version goes through automated scan → manual admin review (AppSubmission + AppReviewTask) before it can be published.

Domain Entity Map

The Marketplace module contains 13 domain entities across five functional areas: listings, developer portal, purchases, analytics, and reviews.

EntityBasePurpose
AppListingAuditableEntity<Guid>Central storefront record linking a PluginDefinition to its commercial presence
AppCategoryAuditableEntity<Guid>Bilingual category tag organizing listings (e.g. "Productivity")
AppCategoryMappingAuditableEntity<Guid>Many-to-many join between AppListing and AppCategory
AppScreenshotAuditableEntity<Guid>Ordered gallery image for a listing's detail page
AppSubmissionAuditableEntity<Guid>Version submission entering the admin review pipeline
AppPricingAuditableEntity<Guid>Pricing model, amount, currency, and trial period for a listing
AppPurchaseAuditableEntity<Guid>Transaction record when a tenant buys a paid app
AppInstallCountAuditableEntity<Guid>Daily install-metric snapshot for analytics dashboards
AppReviewAuditableEntity<Guid>User 1–5 star rating with headline and content body
AppReviewReplyAuditableEntity<Guid>Developer's single reply to a user review
AppReviewTaskAuditableEntity<Guid>Admin task tracking the review pipeline for a submission
DeveloperProfileAuditableEntity<Guid>Tenant registered as a marketplace publisher
DeveloperPayoutAuditableEntity<Guid>Revenue-sharing payout record per billing period

AppCategory Entity

Represents a marketplace category used to organize app listings (e.g. "Productivity", "Analytics", "Communication"). Supports bilingual names (EN/AR) and a URL-safe slug for routing.

FieldTypeDescription
IdGuidPrimary key
NameEnstringCategory name in English
NameArstringCategory name in Arabic
SlugstringURL-safe slug for storefront routes (e.g. "productivity")
IconstringIcon identifier or CSS class for the category badge
DescriptionstringShort description of what this category covers
SortOrderintDisplay order in the category navigation (lower = first)

AppCategoryMapping Entity

Join entity implementing the many-to-many relationship between AppListing and AppCategory. An app can belong to multiple categories, and a category can contain multiple apps.

FieldTypeDescription
IdGuidPrimary key
AppListingIdGuidForeign key to the app listing
AppCategoryIdGuidForeign key to the category

Entity Relationship Overview

The diagram below shows how the 13 Marketplace entities relate. DeveloperProfile is the root — it owns AppListings, which are the hub connecting pricing, submissions, purchases, reviews, screenshots, and analytics.

Developer Profile
publishes
App Listing
has categories
Category Mapping
App Submission
App Pricing
App Purchase
App Review
App Category