Portfolio Case Study

Multi-Seller Marketplace Portfolio Build

A seller-operations and checkout case study built with vanilla JavaScript and Supabase. The goal was to prove that a small-business marketplace can support guest buying, seller-owned dashboards, stock-safe checkout, order tracking, moderated reviews and ratings, and real mobile behavior without hiding the backend complexity.

Portfolio demo / final polish Supabase Backend Vanilla JavaScript PostgreSQL RPC Real Android QA
Marketplace product listing screenshot

Buyer-facing storefront used to test product browsing, cart behavior, checkout, tracking, seller contact, and review flows.

Project Overview

A commerce workflow with real data ownership and checkout rules.

The case study focuses on the difficult parts behind a marketplace interface: who owns each record, how seller dashboards stay isolated, how checkout avoids stale stock, how public tracking works without buyer login, and how reviews are moderated before they appear publicly.

Buyer Side

Buyers can browse products, add items to cart, check out as guests, track orders, contact sellers, and leave reviews for completed orders.

Seller Side

Sellers can log in, complete onboarding, manage products, update order statuses, and moderate customer reviews from a dedicated dashboard.

Backend Focus

The project uses Supabase Auth, relational tables, RLS policies, Storage, and PostgreSQL RPC logic for safer order creation.

Technical Architecture

How the marketplace is organized behind the screens.

The homepage shows the business value. This case study carries the heavier technical proof: database ownership, checkout rules, review moderation, mobile QA, and implementation decisions.

Buyer flow Guest storefront, cart, checkout, order tracking, seller contact, and completed-order reviews.
Seller flow Supabase Auth, onboarding, product CRUD, stock management, order status, and review moderation.
Backend rules Seller-owned records, RLS planning, relational tables, Storage, and PostgreSQL RPC checkout.
QA proof Android Chrome testing for checkout, tracking, review form, landscape layout, and Back behavior.
Browse Cart Checkout Seller order Stock update Track Review

Strongest Technical Wins

Technical decisions that made the demo behave like a real system.

The strongest parts of the build are not the card layout or dashboard visuals. They are the backend checks, ownership model, moderation path, and mobile edge-case fixes that protect the workflow.

Checkout safety

Checkout revalidates active products and stock, groups items by seller, creates seller-specific orders, inserts order items, and deducts inventory through backend logic.

Seller identity consistency

Dashboard queries use the seller record as the source of truth, keeping products, orders, stats, and reviews aligned with the authenticated seller.

Mobile behavior QA

Real Android testing covered landscape scrolling, floating cart positioning, keyboard constraints, checkout redirects, and Android Back behavior.

The Problem

Small sellers need order, stock, and review control without a heavy platform.

Many small sellers need product listings, order tracking, buyer communication, and basic inventory control without the complexity of a full enterprise e-commerce system.

  • Buyer friction should stay low. Buyers should be able to check out without creating a full account.
  • Sellers need protected access. Product, order, and review management should belong only to the correct seller.
  • Inventory needs validation. Checkout should recheck stock before orders are created.

The Solution

A Supabase-backed commerce system with protected seller operations.

I built a working portfolio build where guest buyers can place orders and authenticated sellers can manage their store through a dedicated dashboard.

  • Guest checkout. Buyers can submit order details and use a buyer code for future lookups.
  • Multi-seller order splitting. A cart with products from different sellers creates separate seller-specific orders.
  • Seller dashboard. Sellers manage products, orders, and reviews from one interface.

Core Features

Buyer, seller, order, and review flows included.

The project was designed to show a complete buyer-to-seller flow, with backend rules supporting the user interface.

Buyer Marketplace

  • Product browsing
  • Add to cart
  • Cart persistence
  • Stock-aware quantity controls
  • Guest checkout

Order Flow

  • Buyer code lookup
  • Multi-seller cart grouping
  • Separate seller-specific orders
  • Order tracking by order number
  • Status updates visible to buyers

Seller Dashboard

  • Seller login
  • Product add/edit/delete
  • Stock management
  • Order status control
  • Review moderation

Reviews & Moderation

Buyer reviews are tied to completed orders.

Reviews were added as a real marketplace workflow, not just static text. Buyers can review completed orders, duplicate reviews are blocked, sellers moderate submissions, and approved reviews appear on the product page.

Completed order unlocks review action

The tracking page shows review options only when an order status is completed, keeping reviews tied to actual purchases.

Duplicate review prevention

A buyer cannot repeatedly review the same product for the same order. The UI reflects already-submitted reviews.

Seller moderation

The Seller Hub includes a Reviews section where pending reviews can be approved or hidden before appearing publicly.

Approved review display

Product cards display approved reviews while pending or hidden reviews stay out of the public marketplace view.

Checkout Logic

Multi-seller checkout is the core backend workflow.

A single cart can contain products from different sellers. During checkout, the system groups the items by seller and creates separate orders for each seller. The final checkout path uses backend validation and transaction-style logic to reduce stock mismatch risks.

Buyer adds products to cart

Products are added with seller information, price, quantity, and stock-related data.

Cart is revalidated before checkout

The app checks whether products are still active and whether the requested quantity is still available.

Items are grouped by seller

Products from Seller A and Seller B are separated into different seller-specific order groups.

Orders are created and stock is deducted

Checkout creates seller-specific orders, inserts order items, and deducts stock through PostgreSQL RPC/backend logic so the order and inventory update stay tied together.

Multi-seller checkout result showing separate order numbers

Multi-seller checkout proof showing separate order results for carts that contain products from more than one seller.

Engineering Notes

Implementation details that matter in a real marketplace.

These are the kinds of details that separate a working business system from a static marketplace mockup.

Seller record as source of truth

Authenticated users are mapped to seller records before dashboard queries run. Products, orders, stats, and reviews are read through the seller context, not through loose profile assumptions.

Checkout revalidation

The cart cannot be trusted by itself. Checkout rechecks active products and available stock before creating seller-specific orders and deducting inventory through backend logic.

Review moderation path

Reviews are tied to completed orders, duplicate product/order reviews are blocked, and seller moderation controls which reviews become visible in the public marketplace.

History and mobile safety

Buyer tracking, review forms, empty cart redirects, checkout success, and Seller Hub sections were tested against Android Back behavior so users do not get trapped or accidentally exit a flow.

Screenshots

Screenshots of the tested marketplace flows.

Marketplace home and product listing

Marketplace Home

Buyer-facing product listing with product cards, prices, stock display, add-to-cart actions, and cart badge.

Cart and checkout page

Cart and Checkout

Cart page with buyer details, quantity controls, checkout validation, and multi-seller cart support.

Order tracking page

Order Tracking

Public tracking page showing order status, ordered items, seller contact buttons, and review option for completed orders.

Seller login page

Seller Login

Seller authentication page using Supabase Auth, with password recovery support and seller-focused UI.

Seller dashboard overview

Seller Dashboard

Dashboard overview with revenue, pending orders, active products, pending reviews, and seller management tools.

Product CRUD overlay

Product CRUD Overlay

Product add/edit workflow with image handling, validation, price, stock, and product availability controls.

Seller orders management

Seller Orders

Seller order management interface with status updates that sync to the buyer tracking experience.

Reviews moderation

Review Moderation

Seller review moderation workflow where pending buyer reviews can be approved or hidden.

Real-Device QA & DevTools

Mobile responsiveness was tested as behavior, not only layout.

The marketplace was tested on a real Android phone using Chrome remote debugging. The QA pass covered portrait and landscape orientation, keyboard behavior, floating buttons, checkout redirects, Android Back navigation, dashboard section history, and external contact links.

chrome://inspect USB debugging and live Android tab inspection
pushState Seller Hub sections and review forms handle Back behavior
Landscape Scroll, keyboard, alert, table, and cart FAB checks
Deep links Call/Text, Messenger, TikTok tested on device
Chrome inspect page showing Android Chrome tabs available for remote debugging
Chrome remote debugging proof. Used chrome://inspect with Android USB debugging to focus live mobile tabs, inspect page behavior, and validate marketplace flows beyond desktop browser resizing.

Android Back behavior

Checkout success, empty cart, Track “Back to Shop,” Seller Hub Orders/Reviews, and buyer review forms were adjusted to avoid confusing history loops or accidental app exits.

Landscape constraints

Buyer pages were hardened for short landscape screens: cart and track scrolling, cart floating button position, table overflow, and review form usability with the keyboard open.

Contact link QA

Call/Text, Messenger, and TikTok were confirmed working. Viber deep links opened the app but did not reliably start chat, so the Viber button was hidden while the onboarding field remains available for future compatibility review.

Backend Design

Supabase schema, seller ownership, RLS, and RPC checkout.

The backend structure supports separate buyer and seller workflows. Sellers authenticate through Supabase Auth, while buyers can use a guest checkout flow.

Database Tables

  • profiles
  • sellers
  • products
  • buyers
  • orders
  • order_items
  • reviews

Backend Responsibilities

  • Map authenticated users to seller records
  • Protect seller-owned products and orders
  • Validate stock before checkout
  • Create seller-specific orders
  • Support review moderation through RLS policies
  • Keep seller dashboard queries aligned with seller-owned records

Ownership model

Why it matters: seller dashboards must not leak products, orders, stats, or reviews across sellers. The case study uses seller-owned records as the operating context for dashboard behavior.

RPC checkout

Why it matters: order creation and stock deduction need to stay tied together. Checkout logic belongs in controlled backend steps instead of relying only on client-side cart state.

Moderation rules

Why it matters: public reviews affect trust. The project separates buyer submission, seller moderation, and public approved display.

Supabase backend screenshot showing database schema design Supabase backend screenshot showing SQL logic

Supabase backend proof showing database structure and SQL logic behind the marketplace workflow.

Tech Stack

Stack used to build and harden the system.

The project keeps the frontend simple while using Supabase for the backend, authentication, storage, policies, and database logic.

HTML CSS Vanilla JavaScript Node.js npm packages / CLI Docker Vite Supabase Auth Supabase Database Supabase Storage PostgreSQL RLS Policies RPC Transactions GitHub Vercel Chrome DevTools chrome://inspect Android Chrome QA History API

What This Project Demonstrates

What this case study proves.

This project demonstrates practical implementation skills beyond a static frontend demo.

Supabase Architecture

Auth, tables, relationships, storage, and security policies were combined into one working marketplace flow.

Business Logic

The project handles real marketplace concerns such as seller ownership, stock control, checkout validation, and order status.

Debugging and Refinement

The project required resolving seller identity mismatches, RLS access issues, order creation logic, review moderation rules, mobile landscape bugs, and browser-history edge cases.

My Role

My role in the build.

I designed and built the marketplace as a backend-oriented full-stack portfolio case study, with focus on business rules, seller ownership, SQL-backed checkout, QA, and documentation.

Focus Areas

  • Supabase backend setup
  • Database table design
  • Seller identity model
  • RLS policy debugging
  • Product and order workflows
  • Checkout transaction logic
  • Seller dashboard behavior
  • Real Android device testing
  • Chrome DevTools remote debugging
  • Browser history and Android Back behavior
  • Portfolio-ready documentation

Future Improvements

What would make this production-grade.

These are optional future improvements that could turn the portfolio build into a more production-ready system.

Order cancellation module

Add buyer/seller cancellation rules, status transitions, stock restoration, and audit history as a separate workflow module.

Payments and refunds

Add payment integration, payment status tracking, receipt handling, and refund rules for production checkout.

iOS Safari QA

Extend the real-device QA pass to iOS Safari, including safe areas, viewport height behavior, keyboard behavior, and contact link handling.

Scope note: Viber contact data is still captured in onboarding, but the public Viber button is hidden until a reliable direct-chat deep-link format is confirmed across devices. Call/Text, Messenger, and TikTok were tested successfully.

Need a Supabase-backed web system?

This marketplace portfolio build demonstrates backend workflows, seller dashboards, database rules, and practical full-stack implementation using Supabase and vanilla JavaScript.