Two concise user flows are documented below: Creator and Buyer.
- Connect wallet and create profile in the app.
- Upload material metadata and file via the Creator Upload UI.
- Backend pins file and metadata to IPFS (Pinata) and creates a
materialsrecord in MongoDB. - Creator sets price, visibility, and rights.
- Optionally the backend registers the material on-chain via
MaterialRegistry(Soroban), emittingmaterial.registeredevents. - Indexer picks up on-chain events and updates derived state.
Systems involved: Frontend, Backend API, MongoDB (materials), IPFS/Pinata, Soroban MaterialRegistry, Indexer.
- Browse marketplace, open a material detail page.
- Start checkout; frontend requests a signed Stellar transaction via wallet.
- Backend or frontend submits transaction to Soroban
PurchaseManager. - Soroban emits
purchase.completedevent on success. - Indexer consumes events and writes
purchasesandentitlement_cache. - Buyer requests material access; backend checks
entitlement_cacheandpurchasesand returns an access status.
Systems involved: Frontend, Wallet, Soroban PurchaseManager, Stellar RPC, Indexer, MongoDB (purchases, entitlement_cache).
- Run the indexer locally:
npm run indexer:stellar(usesscripts/run-stellar-indexer.mjs). - Reprocess dead-letter entries:
node scripts/reprocess-deadletter.mjs. - Inspect dead-letter events in MongoDB collection
dead_letter_eventsfor failure details.