PRD Pro
/Marketplace Produk Digital

Product Requirements Document

Marketplace Produk Digital

28 Mei 2026·8 seksi·Public link
1

Overview

Banyak kreator konten digital dan pelaku UMKM di Indonesia kesulitan memasarkan produk digital mereka karena tidak tersedia platform yang menggabungkan kemudahan publikasi, tampilan yang profesional, dan sistem pembayaran yang aman dalam satu ekosistem. Saat ini, mereka mengandalkan kombinasi tools yang terpisah-pisah — seperti Google Drive untuk distribusi file, transfer bank manual untuk pembayaran, dan media sosial untuk promosi — yang tidak hanya tidak efisien, tetapi juga mengurangi kepercayaan pembeli.

Platform marketplace digital ini dirancang untuk menjawab kebutuhan tersebut dengan menyediakan satu tempat di mana penjual dapat membuat etalase produk digital yang menarik, memproses transaksi secara otomatis dan aman, serta memantau performa penjualan melalui laporan yang mudah dibaca. Produk yang dijual mencakup template desain, konten digital, preset, e-book, dan aset kreatif lainnya. Halaman produk dapat diakses publik tanpa login, sehingga memudahkan distribusi dan promosi oleh penjual kepada calon pembeli.

Ekosistem pengguna platform ini mencakup empat segmen utama: content creator pemula yang baru mulai memonetisasi karyanya, designer digital berpengalaman yang membutuhkan kanal distribusi profesional, konsumen umum (B2C) yang mencari produk digital berkualitas, serta bisnis dan tim (B2B) yang membeli lisensi aset kreatif dalam jumlah lebih besar. Di sisi operasional, platform dikelola oleh staff dan manajer/pemilik melalui panel admin dengan hak akses berbeda, memastikan operasional marketplace berjalan terkontrol dan terstruktur.

2

Requirements

Tabel berikut mendefinisikan seluruh kebutuhan fungsional platform marketplace produk digital, mencakup alur penjual, pembeli, dan admin.

IDRequirementPriorityNotes
FR-01Registrasi & login akun dengan email/passwordP0Wajib untuk pembeli dan penjual
FR-02Login via Google OAuth (SSO)P1Mempercepat onboarding kreator & konsumen
FR-03Penjual dapat membuat toko/storefront sendiriP0Profil toko dengan nama, bio, logo
FR-04Penjual dapat mengunggah produk digital (file + metadata)P0Mendukung format PDF, ZIP, PNG, MP4, dsb.
FR-05Penjual dapat menetapkan harga, deskripsi, dan kategori produkP0Kategori: template, e-book, preset, font, dll.
FR-06Halaman produk dapat diakses publik tanpa loginP0SEO-friendly untuk konversi organik
FR-07Pembeli dapat menambahkan produk ke keranjangP0Single-item checkout juga didukung
FR-08Checkout dengan payment gateway terintegrasiP0Midtrans/Xendit sebagai prioritas utama
FR-09Dukungan metode pembayaran: transfer bank, e-wallet (GoPay, OVO, DANA), QRIS, kartu kreditP0Menjangkau segmen B2C dan B2B
FR-10Pengiriman file digital otomatis setelah pembayaran berhasilP0Via link download terproteksi dengan expiry
FR-11Pembeli mendapat riwayat transaksi dan akses ulang ke file yang dibeliP0Di halaman "My Purchases"
FR-12Penjual mendapat notifikasi real-time saat ada penjualanP1Push notifikasi + email
FR-13Dashboard penjual: ringkasan pendapatan, jumlah penjualan, produk terlarisP0Grafik harian/mingguan/bulanan
FR-14Sistem pencairan dana (withdrawal) ke rekening penjualP1Jadwal pencairan: manual request atau otomatis mingguan
FR-15Fitur diskon/kupon promo per produk atau per tokoP1Penjual bisa buat kode kupon sendiri
FR-16Rating & ulasan produk oleh pembeli terverifikasiP1Hanya pembeli yang sudah bertransaksi
FR-17Fitur pencarian produk dengan filter kategori, harga, dan ratingP1Search bar global di seluruh marketplace
FR-18Admin panel: manajemen user (penjual & pembeli)P0Staff dan manajer dengan role berbeda
FR-19Admin panel: moderasi produk sebelum tayangP1Approval workflow: pending → approved/rejected
FR-20Admin panel: laporan transaksi platform secara keseluruhanP0Export ke CSV/Excel
FR-21Sistem komisi platform per transaksi (configurable by admin)P1Default: persentase dari harga jual
FR-22Halaman beranda publik dengan produk featured & kategori populerP1Dikurasi manual oleh admin atau by sales rank
FR-23Penjual B2B dapat membuat akun tim dengan multiple memberP2Akses bersama ke satu storefront
FR-24Affiliate/referral system untuk kreatorP2Link unik dengan tracking komisi referral
FR-25Integrasi analitik toko: sumber traffic, conversion rate per produkP2Bisa di-embed UTM tracking

AspekRequirementTarget
PerformanceWaktu load halaman produk (publik)< 2 detik pada koneksi 4G
PerformanceWaktu proses checkout hingga konfirmasi pembayaran< 5 detik untuk metode instan (QRIS/e-wallet)
PerformanceWaktu pengiriman link download setelah pembayaran sukses< 10 detik
AvailabilityUptime layanan marketplace≥ 99.5% per bulan
ScalabilityConcurrent user yang dapat dilayani tanpa degradasi≥ 1.000 concurrent users pada launch
ScalabilityUkuran file produk digital yang dapat diunggah penjualMaksimal 500 MB per file
SecuritySemua data transaksi dan file dienkripsiTLS 1.2+ untuk data in-transit, AES-256 untuk storage
SecurityLink download produk bersifat token-based dan memiliki expiryToken expired dalam 24 jam atau setelah 3x unduh
SecurityProteksi terhadap brute-force loginRate limiting: max 5 percobaan/menit per IP
SecurityPemisahan role admin: staff (read/moderate) vs manajer (full access)Role-based access control (RBAC)
ComplianceData pribadi user disimpan sesuai prinsip data minimizationSelaras dengan UU PDP Indonesia
ComplianceRekam jejak transaksi tersimpan untuk keperluan auditMinimal 5 tahun
Usability
3

Core Features

FiturDeskripsiMVPPriority
Registrasi & LoginSign up/login untuk penjual dan pembeli via email + OAuth (Google), dengan verifikasi emailP0
Seller OnboardingAlur pendaftaran toko digital: nama toko, deskripsi, upload logo, kategori produkP0
Upload Produk DigitalPenjual upload file digital (PDF, ZIP, PNG, dll), isi judul, deskripsi, harga, thumbnail, kategoriP0
Halaman Produk PublikHalaman detail produk yang bisa diakses tanpa login: preview thumbnail, deskripsi, harga, ratingP0
Keranjang & CheckoutPembeli bisa tambah produk ke keranjang, review order, lanjut ke pembayaranP0
Payment GatewayIntegrasi Midtrans untuk mendukung transfer bank, QRIS, e-wallet (GoPay, OVO, Dana)P0
Pengiriman File OtomatisSetelah pembayaran sukses, sistem otomatis kirim link download terproteksi ke pembeliP0
Dashboard PenjualRingkasan penjualan, produk aktif, total pendapatan, jumlah transaksi per periodeP0
Dashboard AdminManajemen user (staff & manajer), moderasi produk, monitoring transaksi platformP0
Laporan & RingkasanLaporan penjualan harian/mingguan/bulanan untuk penjual, export CSV, grafik revenueP0
Pencarian & Filter ProdukCari produk berdasarkan keyword, filter kategori, harga, rating, terbaruP1
Sistem Rating & UlasanPembeli bisa beri rating bintang dan ulasan teks setelah download produkP1
Manajemen Diskon & KuponPenjual bisa buat kode kupon diskon persen atau nominal untuk produk tertentuP1
Halaman Storefront TokoHalaman publik toko penjual: list semua produk, profil toko, statistik tokoP1
Affiliate & ReferralProgram referral untuk pembeli/kreator yang merekomendasikan produk ke orang lainP2

Must have (P0):

  • Registrasi & login penjual/pembeli dengan verifikasi email dan OAuth Google
  • Seller onboarding dengan profil toko dan kategori produk
  • Upload & manajemen produk digital dengan file delivery
  • Halaman produk publik (dapat diakses tanpa login)
  • Keranjang belanja dan alur checkout
  • Payment gateway via Midtrans (QRIS, transfer bank, e-wallet)
  • Pengiriman file otomatis terproteksi pasca-pembayaran
  • Dashboard penjual dengan ringkasan pendapatan dan transaksi
  • Dashboard admin dengan role staff dan manajer/pemilik
  • Laporan penjualan dengan export CSV dan visualisasi grafik

Should have (P1):

  • Pencarian dan filter produk berdasarkan kategori, harga, dan rating
  • Sistem rating dan ulasan produk oleh pembeli terverifikasi
  • Manajemen diskon dan kode kupon oleh penjual
  • Halaman storefront publik per toko penjual

Could have (P2):

  • Program affiliate dan referral untuk kreator dan pembeli
  • Notifikasi email otomatis (konfirmasi order, pengingat review)
  • Wishlist / simpan produk untuk dibeli nanti
  • Preview produk digital terbatas (watermarked preview)

Won't have (v1):

  • Subscription / membership berbayar untuk akses produk berulang
  • Live chat antara penjual dan pembeli
  • Multi-currency dan pembayaran internasional
  • Mobile app native (iOS/Android) — v1 hanya web responsive
4

User Flow

Terdapat empat flow utama yang perlu dimodelkan: registrasi & login, alur penjual mengunggah produk, alur pembeli melakukan pembelian, dan alur admin mengelola platform. Setiap flow dirancang sesuai peran masing-masing aktor.


Flow 1 — Registrasi & Login

Pengguna baru (pembeli atau penjual) mendaftar menggunakan email atau akun sosial, lalu memilih peran. Pengguna yang sudah terdaftar langsung masuk ke dashboard sesuai perannya.

Rendering diagram...

Flow 2 — Penjual: Upload & Publikasi Produk Digital

Penjual yang sudah login dapat membuat listing produk digital baru, mengatur harga, mengunggah file, lalu mempublikasikannya ke marketplace. Produk masuk status review sebelum tampil publik.

Rendering diagram...

Flow 3 — Pembeli: Browse, Beli, & Download Produk

Pengunjung dapat menelusuri produk tanpa login. Untuk membeli, pembeli wajib login, lalu melanjutkan ke pembayaran. Setelah pembayaran berhasil, file produk dapat langsung diunduh.

Rendering diagram...

Flow 4 — Admin: Moderasi Produk & Kelola Platform

Staff dan manajer/pemilik mengakses panel admin untuk mereview produk yang disubmit penjual, mengelola pengguna, dan memantau laporan transaksi. Manajer memiliki akses tambahan ke konfigurasi platform.

Rendering diagram...

Flow 5 — Penjual: Lihat Laporan & Ringkasan

Penjual dapat memantau performa produk dan ringkasan pendapatan dari dashboard mereka tanpa perlu mengakses panel admin.

Rendering diagram...
5

Architecture

Rendering diagram...

Arsitektur menggunakan pendekatan modular monolith pada tahap awal (bukan microservices penuh) untuk mempercepat development dari kondisi "baru ide" — setiap service dipisahkan secara logis di dalam satu codebase, sehingga dapat di-extract menjadi microservice independen saat skala membutuhkan.

LayerTechnologyAlasan
FrontendNext.js 14 (React + TypeScript)SSR/SSG untuk SEO produk digital yang bisa diakses publik tanpa login; App Router mendukung streaming UI
StylingTailwind CSS + Shadcn/UIKomponen siap pakai, tampilan konsisten, mempercepat UI development untuk marketplace
State ManagementZustand + React QueryZustand untuk global state ringan (cart, auth); React Query untuk server state & caching API call
BackendNode.js + NestJS (TypeScript)Arsitektur modular native, decorator-based, cocok untuk memisahkan domain Marketplace/Order/Payment
API ProtocolREST + OpenAPI SpecDokumentasi otomatis via Swagger, mudah di-consume frontend dan integrasi third-party
DatabasePostgreSQL 15Relasional kuat untuk transaksi keuangan, ACID compliance, support JSON column untuk metadata produk
Caching & SessionRedis 7Session JWT blacklist, cache produk populer, rate limiting counter di API Gateway
Object StorageCloudflare R2 (S3-compatible)Penyimpanan file produk digital (PDF, template, ZIP) dan aset media; biaya egress nol
CDNCloudflareDistribusi aset statis, DDoS protection, edge caching untuk halaman produk publik
AuthJWT + Refresh Token + Google OAuth2Stateless auth untuk API; Google OAuth untuk registrasi cepat kreator dan konsumen
PaymentMidtrans (primary) + Xendit (alternatif)Midtrans coverage luas untuk QRIS, VA, kartu; Xendit sebagai fallback dan disbursement penjual
EmailSendGridNotifikasi transaksi, verifikasi akun, pengiriman link download produk digital
Deploy — FrontendVercelZero-config Next.js deployment, preview per branch, global edge network
Deploy — BackendRailway / Fly.ioContainer-based, auto-scale, managed PostgreSQL & Redis addon tersedia
CI/CDGitHub ActionsPipeline otomatis: lint → test → build → deploy ke staging/production
MonitoringSentry (error) + Grafana + LokiTracking error runtime, log aggregation, alerting untuk payment failure

Catatan Arsitektur Kritis:

KeputusanPilihanAlasan
File delivery produk digitalPre-signed URL dengan expiry 15 menit dari R2Mencegah sharing link langsung; pembeli hanya bisa download setelah payment confirmed
Payment webhookEndpoint terpisah dengan signature verificationValidasi payload Midtrans/Xendit sebelum update status order di DB
Multi-role accessRBAC via guard NestJS (Consumer, Creator, Staff, Manager)Manager/pemilik akses penuh laporan; Staff akses terbatas; Creator hanya kelola produk sendiri
Konten publik tanpa loginNext.js SSG/ISR untuk halaman produkHalaman produk terindeks mesin pencari tanpa perlu autentikasi, mendukung visibilitas UMKM
6

Design & Technical Constraints

KategoriConstraintDampak ke Development
PerformanceHalaman listing produk harus load < 2 detik pada koneksi 4G Indonesia (rata-rata 10 Mbps)Wajib implementasi lazy loading, image compression (WebP), dan CDN untuk aset digital
PerformanceProses checkout & konfirmasi pembayaran maksimal 5 detik end-to-endAPI payment gateway harus async dengan fallback timeout handler dan antrian transaksi
SecurityTidak ada compliance eksplisit yang ditetapkan — adopsi standar minimum PCI-DSS Level 1 untuk pemrosesan kartu dan UU PDP (UU No. 27/2022) untuk data pengguna IndonesiaWajib enkripsi data sensitif at-rest (AES-256) dan in-transit (TLS 1.3), tidak boleh simpan raw card data di server sendiri
SecurityFile produk digital harus terlindungi dari akses tidak sah setelah pembelianURL download wajib pakai signed URL dengan expiry (maks 24 jam), bukan direct public link ke storage
SecurityMulti-role access: Konsumen, Penjual (Kreator/UMKM), Staff, Manajer/PemilikSistem RBAC wajib diimplementasi sejak awal — perubahan permission di tengah development sangat costly
UX/UIKonten marketplace harus bisa dilihat tanpa login (public browsing)Routing dan rendering harus mendukung dua mode: authenticated dan unauthenticated, termasuk SEO meta tag untuk halaman produk publik
UX/UITarget user mencakup kreator pemula yang belum familiar teknologi dan desainer berpengalamanUI harus bersih dan low-friction — onboarding penjual maksimal 3 langkah, tanpa jargon teknis
UX/UIPlatform melayani segmen B2C (konsumen umum) dan B2B (bisnis/tim) sekaligusDashboard penjual dan tampilan produk harus adaptif — B2B butuh fitur seperti pembelian lisensi multiple, B2C butuh flow impulse-buy yang cepat
TimelineProyek baru pada tahap ide, belum ada codebase atau infrastruktur existingTidak ada technical debt yang bisa diwarisi, tapi seluruh setup infrastruktur (repo, CI/CD, environment, DB) harus dibangun dari nol sebelum sprint pertama
TimelineTidak ada target tanggal rilis yang ditetapkan, namun MVP harus cukup untuk validasi pasarScope MVP harus dikunci sebelum development dimulai — feature creep adalah risiko utama mengingat tidak ada deadline eksternal yang memaksa
Budget/InfraPayment gateway belum dipilih — integrasi multi-gateway (Midtrans, Xendit, dll.) belum dikonfirmasiArsitektur payment service harus dibuat abstrak (payment adapter pattern) agar bisa swap atau tambah gateway tanpa refactor besar
Budget/InfraProduk digital (file template, konten) membutuhkan storage yang skalabelWajib gunakan object storage terpisah (bukan local disk server) — estimasi biaya storage harus masuk dalam perencanaan infra dari awal
Budget/InfraKPI dan metrik sukses belum didefinisikanAnalytics dan event tracking (minimal page view, conversion rate, GMV) harus dibangun sejak MVP agar data tersedia saat evaluasi — bukan ditambahkan belakangan
7

Entity Relationship Diagram (ERD)

Rendering diagram...

Schema detail entitas utama:

Tabel: USERS

ColumnTypeConstraintKeterangan
iduuidPKIdentitas unik user
full_namevarchar(100)NOT NULLNama lengkap user
emailvarchar(255)UNIQUE, NOT NULLEmail untuk login
password_hashvarchar(255)NOT NULLBcrypt hash password
roleenumNOT NULLbuyer, seller, admin, staff
avatar_urlvarchar(500)NULLABLEURL foto profil
is_verifiedbooleanDEFAULT falseStatus verifikasi email
created_attimestampNOT NULLWaktu registrasi
updated_attimestampNOT NULLWaktu update terakhir

Tabel: PRODUCTS

ColumnTypeConstraintKeterangan
iduuidPKIdentitas unik produk
seller_iduuidFK → seller_profilesPenjual produk
category_iduuidFK → categoriesKategori produk
titlevarchar(200)NOT NULLJudul produk
slugvarchar(220)UNIQUE, NOT NULLURL-friendly identifier
descriptiontextNOT NULLDeskripsi lengkap produk
pricedecimal(12,2)NOT NULLHarga dalam Rupiah
thumbnail_urlvarchar(500)NOT NULLGambar utama produk
statusenumNOT NULLdraft, published, suspended
download_countintegerDEFAULT 0Total unduhan
rating_avgdecimal(3,2)DEFAULT 0.00Rata-rata rating (1–5)
published_attimestampNULLABLEWaktu produk dipublikasikan
created_attimestampNOT NULLWaktu produk dibuat
updated_attimestampNOT NULLWaktu update terakhir

Tabel: ORDERS

ColumnTypeConstraintKeterangan
iduuidPKIdentitas unik order
buyer_iduuidFK → usersPembeli yang melakukan order
order_codevarchar(20)UNIQUE, NOT NULLKode order untuk referensi (e.g. ORD-20240801-0001)
subtotaldecimal(12,2)NOT NULLTotal sebelum fee platform
platform_feedecimal(12,2)NOT NULLPotongan platform
total_amountdecimal(12,2)NOT NULLTotal yang dibayar pembeli
statusenumNOT NULLpending, paid, completed, cancelled, refunded
paid_attimestampNULLABLEWaktu konfirmasi pembayaran
created_attimestampNOT NULLWaktu order dibuat
updated_attimestampNOT NULLWaktu update status terakhir

Tabel: PAYMENTS

ColumnTypeConstraintKeterangan
iduuidPKIdentitas unik payment record
order_iduuidFK → ordersOrder yang dibayar
gateway_providervarchar(50)NOT NULLNama penyedia (e.g. Midtrans, Xendit)
gateway_transaction_idvarchar(100)UNIQUEID transaksi dari gateway
payment_methodvarchar(50)NOT NULLQRIS, transfer bank, e-wallet, kartu kredit
amountdecimal(12,2)NOT NULLNominal pembayaran
statusenumNOT NULLpending, success, failed, expired
gateway_responsejsonbNULLABLERaw response dari payment gateway
paid_attimestampNULLABLEWaktu pembayaran dikonfirmasi
expired_attimestampNULLABLEBatas waktu pembayaran
created_attimestampNOT NULLWaktu record dibuat

Tabel: PAYOUTS

ColumnTypeConstraintKeterangan
iduuidPKIdentitas unik payout
seller_iduuidFK → seller_profilesPenjual yang menerima payout
amountdecimal(12,2)NOT NULLTotal pendapatan kotor periode ini
platform_commissiondecimal(12,2)NOT NULLKomisi platform yang dipotong
net_amountdecimal(12,2)NOT NULLDana bersih yang ditransfer ke penjual
statusenumNOT NULLrequested, processing, completed, rejected
bank_account_namevarchar(100)NOT NULLNama pemilik rekening
bank_account_numbervarchar(30)NOT NULLNomor rekening tujuan
bank_namevarchar(50)NOT NULLNama bank tujuan
reference_codevarchar(50)NULLABLEKode referensi transfer bank
requested_attimestampNOT NULLWaktu pengajuan payout
processed_attimestampNULLABLEWaktu payout diproses admin

Tabel: SALES_REPORTS

ColumnTypeConstraintKeterangan
iduuidPKIdentitas unik laporan
seller_iduuidFK → seller_profilesPenjual pemilik laporan
report_datedateNOT NULLTanggal laporan (agregat harian)
total_ordersintegerDEFAULT 0Jumlah order yang selesai pada hari itu
total_items_soldintegerDEFAULT 0Jumlah item terjual
gross_revenuedecimal(12,2)DEFAULT 0Pendapatan kotor
platform_fee_totaldecimal(12,2)DEFAULT 0Total fee platform
net_revenuedecimal(12,2)DEFAULT 0Pendapatan bersih penjual
generated_attimestampNOT NULLWaktu laporan di-generate
8

Development Phases

Rendering diagram...
FasePeriodeDeliverableMilestone
Phase 1 — FoundationWeek 1–4Repo tersetup, skema database final, sistem autentikasi & role (Consumer, Seller, Staff, Manager) berjalan✅ Auth & role system live di staging
Phase 2 — Core MarketplaceWeek 5–9Seller dapat upload produk digital, halaman listing & detail produk aktif, flow checkout end-to-end tersambung ke payment gateway✅ Transaksi pertama berhasil diproses di staging
Phase 3 — Transaksi & KontenWeek 10–13Order management buyer/seller fungsional, sistem unduhan produk digital aman post-payment, halaman produk dapat diakses publik tanpa login✅ Full purchase-to-download flow tervalidasi
Phase 4 — Dashboard & LaporanWeek 14–17Dashboard seller (omzet, produk terlaris), dashboard admin/staff (manajemen pengguna & transaksi), laporan ringkasan dapat diekspor✅ Semua role dapat mengakses data relevan masing-masing
Phase 5 — QA & LaunchWeek 18–20UAT selesai, zero critical bug, hasil security audit terdokumentasi, platform live di production dengan monitoring aktif🚀 Go-live MVP Marketplace Produk Digital

Catatan Prioritas per Fase:

  • P0 (Blocker MVP): Phase 1 dan Phase 2 harus selesai sepenuhnya sebelum Phase 3 dimulai — tanpa auth, produk, dan payment, platform tidak bisa beroperasi.
  • P1 (Penting sebelum launch): Dashboard laporan di Phase 4 wajib mencakup minimal ringkasan pendapatan seller dan rekap transaksi admin agar platform dapat diaudit sejak hari pertama live.
  • P2 (Post-MVP): Fitur B2B (pembelian lisensi tim), program afiliasi seller, dan notifikasi email otomatis dapat dijadwalkan di Sprint pasca-launch tanpa memblokir Go-live.
  • Total estimasi durasi MVP: ±20 minggu dari kickoff, dengan asumsi tim minimum 1 backend dev, 1 frontend dev, 1 designer, dan 1 QA.