Documentation

    Documentation

    Documentation

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    1. /
    2. /Multi-Vendor Store

    Updated Jul 7, 20265 min listen

    1. /
    2. /Multi-Vendor Store

    Updated Jul 7, 20265 min listen

    1. /
    2. /Multi-Vendor Store

    Updated Jul 7, 20265 min listen

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Architecture
    Data Model
    Real Time
    Discovery Mutation Sync
    Security
    Backend Services
    k8s-postgres-fcm Mode
    Firebase Integration
    Features
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Wallet & Credit System
    Multi-Vendor Store
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payments Overview
    PaymentConductor
    SubscriptionConductor
    VideoConductor
    News Module - Digital Newspaper Experience
    Member Blogs
    Public Profile Pages
    Username Reservation System
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Branding
    Themes
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Examples
    Quick Start
    White Label
    Real World
    Integrations
    Ethereum wallets (Wagmi v3)

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Architecture
    Data Model
    Real Time
    Discovery Mutation Sync
    Security
    Backend Services
    k8s-postgres-fcm Mode
    Firebase Integration
    Features
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Wallet & Credit System
    Multi-Vendor Store
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payments Overview
    PaymentConductor
    SubscriptionConductor
    VideoConductor
    News Module - Digital Newspaper Experience
    Member Blogs
    Public Profile Pages
    Username Reservation System
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Branding
    Themes
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Examples
    Quick Start
    White Label
    Real World
    Integrations
    Ethereum wallets (Wagmi v3)

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Architecture
    Data Model
    Real Time
    Discovery Mutation Sync
    Security
    Backend Services
    k8s-postgres-fcm Mode
    Firebase Integration
    Features
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Wallet & Credit System
    Multi-Vendor Store
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payments Overview
    PaymentConductor
    SubscriptionConductor
    VideoConductor
    News Module - Digital Newspaper Experience
    Member Blogs
    Public Profile Pages
    Username Reservation System
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Branding
    Themes
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Examples
    Quick Start
    White Label
    Real World
    Integrations
    Ethereum wallets (Wagmi v3)

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)
    Docs
    Features
    Docs
    Features
    Docs
    Features

    Multi-Vendor Store

    Ring Platform ships a multi-vendor marketplace where any verified Entity can operate a store, list products, and earn through automated commission settlements. The platform operator (Founder) earns from tiered commissions; vendors add products via a configurable product form with per-category custom fields and audience-gated visibility.

    Use the Founder / Developer tabs in the docs sidebar to filter this page by audience.

    Why the multi-vendor store matters for your clone

    Every Entity in your Ring deployment can become a selling vendor — no external marketplace needed. The store generates platform revenue through tier-based commission rates (NEW → BASIC → VERIFIED → TRUSTED → PREMIUM, descending from 20% to 12%) on every sale. Vendors handle cataloguing themselves via the product form; operators review submissions through the admin product queue and process settlements in the commissions dashboard.

    Key operator capabilities

    Vendor lifecycle

    Onboard entities as vendors at /vendor/start. Trust scoring, tier progression, and suspension workflows are automated.

    Commission settlements

    Tier-based commissions calculated per sale. Admin dashboard at /admin/store/commissions shows pending payouts with referral breakdowns.

    Product audience gating

    Vendors can mark products as member-only. Non-member visitors see only public products. Gated by the hasMemberPrivileges() role guard.

    Custom product fields

    Vendors add per-category custom parameters (name + value pairs) below the category selector on the product form. Categories ship with SQL migration presets.

    Typical scenarios

    • A Ring clone for a local business network: every shop in the city becomes a verified Entity and lists inventory in the store; transactions settle automatically.
    • A DAO marketplace: member-gated products (courses, NFTs, service tiers) visible only to role-holders; public products serve as lead magnets.
    • A hosting/provider clone: agencies and dev studios list managed Ring hosting packages; platform operator earns commission on every subscription.

    Implementation

    Multi-vendor architecture

    Product catalog SSOT

    The full unfiltered product list is read once per cache window through getCachedProductCatalog() in features/store/config.ts:

    ConsumerPathRole
    REST storefront APIapp/api/store/products/route.ts (GET)Filter/sort/paginate cached catalog
    Server actionapp/_actions/store-products.ts → getStoreProducts()Same catalog + audience gating + price bounds
    MCP toolsapp/api/mcp/v1/store/products/route.ts (GET)Direct adapter list for external agents

    Related documentation

    Ring ERP

    Inventory, stock management, warehouse operations, and vendor settlement pipelines.

    Vendor Guide

    Step-by-step guide for vendors: onboarding, product listing, and storefront setup.

    Store API

    API routes for products, orders, checkout, payments, and commission settlements.

    Payment Conductor

    WayForPay integration, HMAC webhook validation, and subscription billing.

    Multi-Vendor Store

    Ring Platform ships a multi-vendor marketplace where any verified Entity can operate a store, list products, and earn through automated commission settlements. The platform operator (Founder) earns from tiered commissions; vendors add products via a configurable product form with per-category custom fields and audience-gated visibility.

    Use the Founder / Developer tabs in the docs sidebar to filter this page by audience.

    Why the multi-vendor store matters for your clone

    Every Entity in your Ring deployment can become a selling vendor — no external marketplace needed. The store generates platform revenue through tier-based commission rates (NEW → BASIC → VERIFIED → TRUSTED → PREMIUM, descending from 20% to 12%) on every sale. Vendors handle cataloguing themselves via the product form; operators review submissions through the admin product queue and process settlements in the commissions dashboard.

    Key operator capabilities

    Vendor lifecycle

    Onboard entities as vendors at /vendor/start. Trust scoring, tier progression, and suspension workflows are automated.

    Commission settlements

    Tier-based commissions calculated per sale. Admin dashboard at /admin/store/commissions shows pending payouts with referral breakdowns.

    Product audience gating

    Vendors can mark products as member-only. Non-member visitors see only public products. Gated by the hasMemberPrivileges() role guard.

    Custom product fields

    Vendors add per-category custom parameters (name + value pairs) below the category selector on the product form. Categories ship with SQL migration presets.

    Typical scenarios

    • A Ring clone for a local business network: every shop in the city becomes a verified Entity and lists inventory in the store; transactions settle automatically.
    • A DAO marketplace: member-gated products (courses, NFTs, service tiers) visible only to role-holders; public products serve as lead magnets.
    • A hosting/provider clone: agencies and dev studios list managed Ring hosting packages; platform operator earns commission on every subscription.

    Implementation

    Multi-vendor architecture

    Product catalog SSOT

    The full unfiltered product list is read once per cache window through getCachedProductCatalog() in features/store/config.ts:

    ConsumerPathRole
    REST storefront APIapp/api/store/products/route.ts (GET)Filter/sort/paginate cached catalog
    Server actionapp/_actions/store-products.ts → getStoreProducts()Same catalog + audience gating + price bounds
    MCP toolsapp/api/mcp/v1/store/products/route.ts (GET)Direct adapter list for external agents

    Related documentation

    Ring ERP

    Inventory, stock management, warehouse operations, and vendor settlement pipelines.

    Vendor Guide

    Step-by-step guide for vendors: onboarding, product listing, and storefront setup.

    Store API

    API routes for products, orders, checkout, payments, and commission settlements.

    Payment Conductor

    WayForPay integration, HMAC webhook validation, and subscription billing.

    Multi-Vendor Store

    Ring Platform ships a multi-vendor marketplace where any verified Entity can operate a store, list products, and earn through automated commission settlements. The platform operator (Founder) earns from tiered commissions; vendors add products via a configurable product form with per-category custom fields and audience-gated visibility.

    Use the Founder / Developer tabs in the docs sidebar to filter this page by audience.

    Why the multi-vendor store matters for your clone

    Every Entity in your Ring deployment can become a selling vendor — no external marketplace needed. The store generates platform revenue through tier-based commission rates (NEW → BASIC → VERIFIED → TRUSTED → PREMIUM, descending from 20% to 12%) on every sale. Vendors handle cataloguing themselves via the product form; operators review submissions through the admin product queue and process settlements in the commissions dashboard.

    Key operator capabilities

    Vendor lifecycle

    Onboard entities as vendors at /vendor/start. Trust scoring, tier progression, and suspension workflows are automated.

    Commission settlements

    Tier-based commissions calculated per sale. Admin dashboard at /admin/store/commissions shows pending payouts with referral breakdowns.

    Product audience gating

    Vendors can mark products as member-only. Non-member visitors see only public products. Gated by the hasMemberPrivileges() role guard.

    Custom product fields

    Vendors add per-category custom parameters (name + value pairs) below the category selector on the product form. Categories ship with SQL migration presets.

    Typical scenarios

    • A Ring clone for a local business network: every shop in the city becomes a verified Entity and lists inventory in the store; transactions settle automatically.
    • A DAO marketplace: member-gated products (courses, NFTs, service tiers) visible only to role-holders; public products serve as lead magnets.
    • A hosting/provider clone: agencies and dev studios list managed Ring hosting packages; platform operator earns commission on every subscription.

    Implementation

    Multi-vendor architecture

    Product catalog SSOT

    The full unfiltered product list is read once per cache window through getCachedProductCatalog() in features/store/config.ts:

    ConsumerPathRole
    REST storefront APIapp/api/store/products/route.ts (GET)Filter/sort/paginate cached catalog
    Server actionapp/_actions/store-products.ts → getStoreProducts()Same catalog + audience gating + price bounds
    MCP toolsapp/api/mcp/v1/store/products/route.ts (GET)Direct adapter list for external agents

    Related documentation

    Ring ERP

    Inventory, stock management, warehouse operations, and vendor settlement pipelines.

    Vendor Guide

    Step-by-step guide for vendors: onboarding, product listing, and storefront setup.

    Store API

    API routes for products, orders, checkout, payments, and commission settlements.

    Payment Conductor

    WayForPay integration, HMAC webhook validation, and subscription billing.

    Cache invalidation: after product create, call updateTag('store:products') — verified in app/api/store/products/route.ts (POST) and app/api/mcp/v1/store/products/route.ts (POST). New products appear immediately instead of waiting for cacheLife('minutes').

    Deferred client fetch

    features/store/context.tsx mounts StoreProvider globally (nav cart badge needs totalItems on every route) but defers the product-list network call:

    • Loads only when pathname includes /store or the user already has cart items in localStorage.
    • Uses module-scope single-flight (fetchStoreProductsSingleFlight) so concurrent mounts share one GET /api/store/products.
    • Manual refresh via refreshEnhancedProducts() bypasses single-flight and hits the network fresh.

    This follows the minimal-global-state pattern — no full catalog in client state until a store route or cart warrants it.

    Verified routes

    RoutePurposeAuth
    /vendor/startVendor onboarding formSubscriber+
    /vendor/productsVendor product CRUDVendor entity owner
    /vendor/products/product-form.tsxCreate/edit product form with category selector, custom fields, audience toggleVendor entity owner
    /admin/store/commissionsCommission settlements dashboardPlatform admin
    /admin/store/productsProduct approval queuePlatform admin
    /storePublic storefront with audience filteringPublic (member-gated products hidden)

    Vendor store creation flow

    When a vendor is approved, createVendorProfile() in features/store/services/vendor-lifecycle.ts:

    1. Creates a VendorProfile with store_activated: true and store_status: 'test'
    2. Inherits store categories from ring-config: storeCategories: getSystemConfigSnapshot().store?.storeCategories ?? []
    3. Writes the profile to the entities collection (embedded) and vendor_profiles collection (mirror)
    4. Publishes a STORE_CREATED event

    Categories are defined in ring-config.json under store.storeCategories and shipped via SQL migration presets (productFieldsPresets).

    Product custom fields (per-category)

    Vendors can add arbitrary name-value pairs to products, scoped by category. The flow:

    1. 1
      Vendor selects a category from the dropdown on the product form
    2. 2
      Clicks "Add product parameter" — a name+value input row appears
    3. 3
      Multiple parameters can be added and removed per product
    4. 4
      On save, custom fields are persisted to the product_custom_fields table via createProductCustomField() in app/_actions/vendor-actions.ts

    CRUD actions (all auth-guarded via getVendorEntity() + product ownership verification):

    Product audience filtering

    Products carrying productAudience: 'member' are hidden from non-member visitors. Implemented in app/_actions/store-products.ts after catalog filters:

    The hasMemberPrivileges() guard checks role >= member (member, confidential, admin, superadmin).

    Module summary

    ModulePurpose
    features/store/config.tsAdapter selection + getCachedProductCatalog() SSOT
    features/store/context.tsxStoreProvider — deferred client catalog load, cart state
    features/store/services/vendor-lifecycle.tsVendor profile creation, trust scoring, tier progression
    features/store/services/settlement.tsCommission calculation (tier-based + referral)
    app/_actions/vendor-actions.tsVendor product CRUD, custom fields CRUD
    app/_actions/store-products.tsStorefront listing — cached catalog + filters + audience gate
    app/api/store/products/route.tsREST catalog GET/POST + updateTag on create
    app/api/mcp/v1/store/products/route.tsMCP list/create + updateTag on create
    features/auth/user-role.tshasMemberPrivileges() — role-based product visibility

    Cache invalidation: after product create, call updateTag('store:products') — verified in app/api/store/products/route.ts (POST) and app/api/mcp/v1/store/products/route.ts (POST). New products appear immediately instead of waiting for cacheLife('minutes').

    Deferred client fetch

    features/store/context.tsx mounts StoreProvider globally (nav cart badge needs totalItems on every route) but defers the product-list network call:

    • Loads only when pathname includes /store or the user already has cart items in localStorage.
    • Uses module-scope single-flight (fetchStoreProductsSingleFlight) so concurrent mounts share one GET /api/store/products.
    • Manual refresh via refreshEnhancedProducts() bypasses single-flight and hits the network fresh.

    This follows the minimal-global-state pattern — no full catalog in client state until a store route or cart warrants it.

    Verified routes

    RoutePurposeAuth
    /vendor/startVendor onboarding formSubscriber+
    /vendor/productsVendor product CRUDVendor entity owner
    /vendor/products/product-form.tsxCreate/edit product form with category selector, custom fields, audience toggleVendor entity owner
    /admin/store/commissionsCommission settlements dashboardPlatform admin
    /admin/store/productsProduct approval queuePlatform admin
    /storePublic storefront with audience filteringPublic (member-gated products hidden)

    Vendor store creation flow

    When a vendor is approved, createVendorProfile() in features/store/services/vendor-lifecycle.ts:

    1. Creates a VendorProfile with store_activated: true and store_status: 'test'
    2. Inherits store categories from ring-config: storeCategories: getSystemConfigSnapshot().store?.storeCategories ?? []
    3. Writes the profile to the entities collection (embedded) and vendor_profiles collection (mirror)
    4. Publishes a STORE_CREATED event

    Categories are defined in ring-config.json under store.storeCategories and shipped via SQL migration presets (productFieldsPresets).

    Product custom fields (per-category)

    Vendors can add arbitrary name-value pairs to products, scoped by category. The flow:

    1. 1
      Vendor selects a category from the dropdown on the product form
    2. 2
      Clicks "Add product parameter" — a name+value input row appears
    3. 3
      Multiple parameters can be added and removed per product
    4. 4
      On save, custom fields are persisted to the product_custom_fields table via createProductCustomField() in app/_actions/vendor-actions.ts

    CRUD actions (all auth-guarded via getVendorEntity() + product ownership verification):

    Product audience filtering

    Products carrying productAudience: 'member' are hidden from non-member visitors. Implemented in app/_actions/store-products.ts after catalog filters:

    The hasMemberPrivileges() guard checks role >= member (member, confidential, admin, superadmin).

    Module summary

    ModulePurpose
    features/store/config.tsAdapter selection + getCachedProductCatalog() SSOT
    features/store/context.tsxStoreProvider — deferred client catalog load, cart state
    features/store/services/vendor-lifecycle.tsVendor profile creation, trust scoring, tier progression
    features/store/services/settlement.tsCommission calculation (tier-based + referral)
    app/_actions/vendor-actions.tsVendor product CRUD, custom fields CRUD
    app/_actions/store-products.tsStorefront listing — cached catalog + filters + audience gate
    app/api/store/products/route.tsREST catalog GET/POST + updateTag on create
    app/api/mcp/v1/store/products/route.tsMCP list/create + updateTag on create
    features/auth/user-role.tshasMemberPrivileges() — role-based product visibility

    Cache invalidation: after product create, call updateTag('store:products') — verified in app/api/store/products/route.ts (POST) and app/api/mcp/v1/store/products/route.ts (POST). New products appear immediately instead of waiting for cacheLife('minutes').

    Deferred client fetch

    features/store/context.tsx mounts StoreProvider globally (nav cart badge needs totalItems on every route) but defers the product-list network call:

    • Loads only when pathname includes /store or the user already has cart items in localStorage.
    • Uses module-scope single-flight (fetchStoreProductsSingleFlight) so concurrent mounts share one GET /api/store/products.
    • Manual refresh via refreshEnhancedProducts() bypasses single-flight and hits the network fresh.

    This follows the minimal-global-state pattern — no full catalog in client state until a store route or cart warrants it.

    Verified routes

    RoutePurposeAuth
    /vendor/startVendor onboarding formSubscriber+
    /vendor/productsVendor product CRUDVendor entity owner
    /vendor/products/product-form.tsxCreate/edit product form with category selector, custom fields, audience toggleVendor entity owner
    /admin/store/commissionsCommission settlements dashboardPlatform admin
    /admin/store/productsProduct approval queuePlatform admin
    /storePublic storefront with audience filteringPublic (member-gated products hidden)

    Vendor store creation flow

    When a vendor is approved, createVendorProfile() in features/store/services/vendor-lifecycle.ts:

    1. Creates a VendorProfile with store_activated: true and store_status: 'test'
    2. Inherits store categories from ring-config: storeCategories: getSystemConfigSnapshot().store?.storeCategories ?? []
    3. Writes the profile to the entities collection (embedded) and vendor_profiles collection (mirror)
    4. Publishes a STORE_CREATED event

    Categories are defined in ring-config.json under store.storeCategories and shipped via SQL migration presets (productFieldsPresets).

    Product custom fields (per-category)

    Vendors can add arbitrary name-value pairs to products, scoped by category. The flow:

    1. 1
      Vendor selects a category from the dropdown on the product form
    2. 2
      Clicks "Add product parameter" — a name+value input row appears
    3. 3
      Multiple parameters can be added and removed per product
    4. 4
      On save, custom fields are persisted to the product_custom_fields table via createProductCustomField() in app/_actions/vendor-actions.ts

    CRUD actions (all auth-guarded via getVendorEntity() + product ownership verification):

    Product audience filtering

    Products carrying productAudience: 'member' are hidden from non-member visitors. Implemented in app/_actions/store-products.ts after catalog filters:

    The hasMemberPrivileges() guard checks role >= member (member, confidential, admin, superadmin).

    Module summary

    ModulePurpose
    features/store/config.tsAdapter selection + getCachedProductCatalog() SSOT
    features/store/context.tsxStoreProvider — deferred client catalog load, cart state
    features/store/services/vendor-lifecycle.tsVendor profile creation, trust scoring, tier progression
    features/store/services/settlement.tsCommission calculation (tier-based + referral)
    app/_actions/vendor-actions.tsVendor product CRUD, custom fields CRUD
    app/_actions/store-products.tsStorefront listing — cached catalog + filters + audience gate
    app/api/store/products/route.tsREST catalog GET/POST + updateTag on create
    app/api/mcp/v1/store/products/route.tsMCP list/create + updateTag on create
    features/auth/user-role.tshasMemberPrivileges() — role-based product visibility