Skip to main content

title: “Marketplace (Multi-Seller Storefront)” description: “Marketplace multi-seller Tokopedia-style: katalog gabungan, stock aggregation, banner CMS, dan Shopee sales sync di SNISHOP ERP.”

Marketplace (Multi-Seller Storefront)

Toko Marketplace adalah storefront publik bergaya Tokopedia yang mendukung multi-seller — produk dari berbagai company/tenant ditampilkan dalam satu katalog terpadu. Marketplace.jsx (812 baris) menggabungkan produk fisik (CompanyPOSProduct) dan produk digital (DigitalProduct) menjadi satu grid produk yang bisa di-filter, di-sort, dan di-search. Sistem ini menggunakan inventory-aware stock aggregation yang mengambil data stok langsung dari modul Inventory, memastikan angka stok yang ditampilkan akurat. Fitur “For You” menggunakan scoring algorithm yang menggabungkan popularitas (sold_count) dan recency (created_date) untuk ranking produk. Marketplace juga dilengkapi banner carousel dengan auto-rotate, category grid, trust badges, dan progressive loading (20 produk per batch). Admin bisa mengelola banner, commission rate, dan display settings melalui MarketplaceSettingsTab.

Arsitektur Komponen

Entity & Model

CompanyPOSProduct (Physical Products)

DigitalProduct (Digital Products)

MarketplaceCart

MarketplaceCommissionSettings

Fitur Utama

1. Combined Product Catalog

Marketplace menggabungkan 2 sumber produk menjadi satu grid: Merge Logic:

2. Inventory-Aware Stock Aggregation

Stok produk fisik tidak hanya mengambil dari CompanyPOSProduct.stock, tapi di-aggregate dari modul Inventory: Function: aggregateAvailableStockByProduct() menghitung total stok tersedia dari semua warehouse locations untuk setiap produk.

3. “For You” Product Ranking

Tab “For You” menggunakan scoring algorithm yang menggabungkan popularitas dan recency:
Result: Produk yang populer dan baru muncul mendapat ranking tertinggi.

4. Product Tabs

Banner carousel dengan auto-rotate setiap 5 detik:

6. Category Grid

Grid kategori dengan icon dan label untuk quick filter:

7. Seller Resolution

Marketplace hanya fetch company yang benar-benar memiliki produk aktif — bukan enumerate semua tenants: Security Boundary: Tidak memanggil Company.list() yang bisa expose semua tenants.

8. Progressive Loading

Product grid menggunakan progressive loading untuk performa:

9. Trust Badges

Marketplace menampilkan trust badges untuk membangun kepercayaan:

10. Demo Mode

Marketplace mendukung demo mode untuk preview tanpa data real:

Admin Panel

MarketplaceSettingsTab (320 lines)

3-section admin panel: Commission Live Example:

MarketplaceOrdersTab (188 lines)

Dashboard order marketplace:

Cara Akses

Dari sidebar, klik menu Shop > Toko. URL publik: /marketplace

Flow Penggunaan

Customer / Visitor

  1. Akses /marketplace dari browser
  2. Browse banner carousel untuk promo terbaru
  3. Filter by kategori atau gunakan search
  4. Pilih tab: For You / Terbaru / Terlaris
  5. Klik produk untuk melihat detail
  6. Lihat info seller dan stock availability
  7. Pilih quantity dan klik “Add to Cart”
  8. Lanjut ke checkout dari cart page

Admin

  1. Buka Marketplace dari sidebar untuk preview
  2. Kelola banner melalui MarketplaceSettingsTab
  3. Atur commission rate dan withdrawal settings
  4. Monitor orders melalui MarketplaceOrdersTab
  5. Review statistik: total orders, revenue, commission

Integrasi Cross-Module

Shopee Sales Sync

Marketplace.jsx terintegrasi dengan shopeeSalesSync.js (187 baris) untuk menampilkan angka penjualan yang menggabungkan: Weighted Distribution: Angka penjualan didistribusikan ke produk berdasarkan popularitas.

Tips

  • Gunakan foto produk yang konsisten dan profesional untuk membangun brand trust
  • Monitor stock aggregation — jika ada discrepancy antara Marketplace dan Inventory, check warehouse data
  • Atur commission rate yang fair untuk seller — terlalu tinggi mengurangi minat seller bergabung
  • Gunakan banner carousel untuk highlight promo atau produk baru
  • Progressive loading (20 per batch) menjaga performa — jangan load semua produk sekaligus
  • For You scoring algorithm otomatis mempromosikan produk populer dan baru — tidak perlu manual sorting

Referensi Entity Schema (base44)

Berikut adalah dokumentasi schema lengkap untuk setiap entity yang digunakan dalam modul Toko/Marketplace, diambil langsung dari definisi JSONC di base44/entities/.

Diagram Relasi Entity (erDiagram)

Tabel Schema Entity Lengkap

DigitalProduct

Struktur order_form_fields[*]: Struktur variants[*]:

MarketplaceCart

MarketplaceCommissionSettings

MarketplaceOrder

Struktur items[*]: Struktur shipping_address:

ProductOrder (Pesanan Produk Digital)

ShopSettings

Struktur promo_banner: Struktur reseller_discounts:

CompanyPOSCategory

CompanyPOSInventory

CompanyPOSSettings

Struktur receipt_settings:

Customer

CustomerMembership

WarehouseLocation


Diagram Status (stateDiagram)

Status MarketplaceOrder

Status ProductOrder (Produk Digital)


Diagram Sekuens (sequenceDiagram)

Flow Checkout Marketplace (Produk Fisik)

Flow Pemesanan Produk Digital

Flow Stock Aggregation dari Warehouse


Tabel Enum

Enum category (DigitalProduct)

Enum status (MarketplaceOrder)

Enum payment_status (MarketplaceOrder)

Enum status (ProductOrder)

Enum type (CompanyPOSInventory)

Enum customer_type (Customer)

Enum status (Customer)

Enum location_type (WarehouseLocation)

Enum scheme_type (CustomerMembership)

Enum reward_type (CustomerMembership)

Enum payment_terms (Customer)

Enum field_type (DigitalProduct.order_form_fields)


Tabel RBAC (Row-Level Security)

Berikut adalah aturan akses per entity berdasarkan definisi RLS di base44: Detail RLS Customer (Company-Scoped): Akses ke entity Customer dibatasi dengan kondisi OR berikut:
  1. data.company_id = user.data.active_company_id DAN company_id tidak null/kosong
  2. created_by_id = user.id (creator bisa akses data sendiri)
  3. user.role = admin (admin memiliki akses penuh)
Aturan ini berlaku identik untuk operasi Create, Read, Update, dan Delete.