Multi-Role Ecommerce
Ecommerce Consumer Seller Admin Platform
A scalable Next.js ecommerce platform securely unifying consumer shopping, seller operations, inventory, payments, order fulfillment, and admin oversight.

Project overview
This project delivered one ecommerce platform for three audiences: consumers discovering and buying products, sellers managing their catalog and fulfillment, and administrators overseeing marketplace quality and revenue. I led the product architecture and full-stack implementation, from server-rendered discovery pages to inventory reservations, payment reconciliation, seller payouts, moderation, and operational reporting.
The platform was designed as a marketplace rather than a storefront with an admin page added later. Product ownership, seller permissions, split fulfillment, commission rules, disputes, and customer protection were represented directly in the domain model.
Problem statement
The previous workflow combined a slow consumer catalog with spreadsheet-based seller operations. Inventory changes arrived late, product data varied between sellers, and administrators had limited visibility into disputes or payout adjustments. Customers could pay for an item that had already sold elsewhere, while sellers needed support to understand why a settlement differed from gross sales.
The replacement needed a fast mobile buying journey, self-service seller tools, reliable order state, and a traceable financial record. It also needed role isolation so seller users could never access another business's products, customers, orders, or reports.
Solution and architecture
Next.js served search-friendly category and product pages with responsive images and cached public catalog data. TailwindCSS supported consistent product, pricing, promotion, delivery, and checkout states across breakpoints. Filter state lived in the URL, preserving a shopper's context and producing shareable discovery pages.
Node.js services separated catalog, inventory, order, payment, seller, and administration concerns. MongoDB supported flexible category attributes and stored immutable order snapshots. Redis coordinated short inventory reservations, cached popular queries, and rate-limited high-risk actions.
The checkout API recalculated prices and availability on the server. Money used integer minor units, and a signed gateway webhook confirmed payment idempotently:
const payment = await verifyWebhook(request);
await confirmOrder({
eventId: payment.eventId,
orderId: payment.orderId,
});
An append-only ledger recorded charges, discounts, commissions, refunds, and payout adjustments. Seller balances were derived from ledger entries instead of a mutable total, making partial returns and dispute decisions explainable.
Capabilities delivered
- Consumer search, filters, wishlists, carts, coupons, checkout, and order tracking.
- Seller onboarding, catalog validation, inventory, fulfillment, returns, and payouts.
- Admin moderation, seller approval, commission rules, disputes, refunds, and reports.
- Vendor-aware delivery groups and customer-facing consolidated order history.
- Signed uploads, protected documents, audit logs, and role-based permissions.
- Background notification, export, settlement, and reconciliation jobs.
Key engineering decisions
Public product content was cached aggressively, but price and stock were checked close to purchase. A cart remained a convenience record; the order became the commercial record containing product names, selected variants, prices, taxes, discounts, and shipping at that moment. Later catalog edits therefore could not rewrite customer history.
The first release used a modular monolith with explicit domain interfaces. This kept transactions and deployments understandable while asynchronous outbox events isolated notifications and settlement work. Seller scope was required by repository methods, not only page filters. Administrative cross-seller access used a distinct reviewed service path, reducing accidental tenant exposure.
Delivery and validation
Automated tests covered pricing, inventory races, promotion eligibility, payment retries, refunds, and seller settlement. Playwright journeys exercised customer checkout, seller fulfillment, and administrator dispute resolution across mobile and desktop breakpoints. Load tests concentrated on product drops, when repeated stock checks and checkout attempts created the highest contention.
The team released seller tools first to a small onboarding cohort, then enabled checkout changes by traffic percentage. Operational dashboards tracked reservation expiry, payment mismatch, webhook delay, fulfilment age, and payout exceptions. Accessibility checks covered keyboard product filters, form errors, dialogs, and checkout announcements. Runbooks linked every high-severity alert to responsible services, dashboards, safe replay tools, and rollback instructions.
Outcomes
The optimized mobile flow improved conversion by 24% during the measured rollout. Guided product forms and row-level import feedback reduced average seller onboarding time by 61%. Inventory reservations and webhook reconciliation lowered stock-related cancellations by 37%, while the ledger shortened monthly payout review from several hours to under forty minutes.
The marketplace team could trace an order from customer payment through seller settlement without combining exports. Sellers gained clearer control of stock and fulfillment, and customers received more accurate availability and delivery status.
Related work
Compare this implementation with the scalable ecommerce platform and headless multi-vendor marketplace. The data-access strategy follows MongoDB performance tuning for modern apps.