Skip to main content
Back to projects

ShopO

Multivendor E-commerce platform

A full marketplace where independent sellers run their own shops, customers buy across all of them in one checkout, and admins keep the whole platform healthy. It ships with real-time buyer and seller chat, Stripe payments and transactional email.

ShopO homepage
3
User roles
10
Route modules
9
Data models
Real-time
Messaging

Demo video

Demo video coming soon

A full walkthrough of ShopO will be added here.

Customer, seller and admin walkthrough.

Overview

ShopO is a multi-vendor e-commerce platform that brings customers, sellers and administrators into a single ecosystem. Instead of one store with one catalog, every seller owns a shop, a product catalog and an order pipeline, while the customer sees one unified storefront.

Customers

Browse products, join promotional events, place orders and message sellers directly.

Sellers

Create a shop, manage the catalog, process orders, run coupons and events, and talk to buyers.

Administrators

Oversee platform operations, manage users and sellers, and monitor system health.

The platform combines real-time communication, secure payment processing and automated email notifications so the experience feels complete from sign-up to delivery.

Goals of the Project

The aim was a complete, scalable marketplace that works equally well for the people selling and the people buying.

True multi-vendor functionality

Multiple independent sellers create and manage their own shops, each with a dedicated interface for shop settings, product listings and order processing.

A complete shopping experience

Customers browse, add to cart or wishlist, pay through Stripe and track every order through the fulfilment cycle.

Real-time communication

Built-in chat lets buyers and sellers talk directly, which covers product questions and customer support without leaving the platform.

System Architecture

ShopO is built on a modern full-stack JavaScript architecture. A React single-page app talks to an Express REST API, with a separate Socket.io channel for live messaging and third-party services for payments, media and email.

LayerTechnologyPurpose
FrontendReact 18 + ViteUser interface and build tooling
State managementRedux ToolkitGlobal application state
BackendExpress.js 5.1REST API server
DatabaseMongoDB + Mongoose 8Document storage and ODM
Real-timeSocket.ioLive messaging
AuthenticationJWT + bcryptToken-based auth with password hashing
PaymentsStripePayment processing
File storageCloudinary + MulterImage upload and storage
EmailNodemailerTransactional emails
DeploymentVercelProduction hosting
System architecture
Three client roles share one React frontend. The Express API fans out into domain modules, each backed by MongoDB or an external service.

Key Features

Functionality is organised around three interfaces: customer shopping, seller management and admin oversight.

Multi-role user system

Three distinct roles, each with a dedicated interface and protected routing.

  • Customer interface: shopping, cart, order tracking and messaging
  • Seller dashboard: product management, order processing and shop analytics
  • Admin panel: user management, order oversight and platform administration

Product management and shopping

A full catalog experience with search and categorisation.

  • Real-time product search with dropdown results
  • Grid-based category browsing with visual icons
  • Cart with stock validation and duplicate prevention
  • Wishlist to save and remove products

Payment processing

Secure checkout through Stripe Elements, rendered conditionally so the app degrades gracefully when no API key is configured.

Real-time messaging

A built-in customer and seller inbox over Socket.io, with image attachments and live updates on both sides.

Seller dashboard

The tools a seller needs to run a shop day to day.

  • Account balance tracking with service charge calculations
  • Order management for every shop order
  • Product analytics and performance metrics
  • Coupon creation and management
  • Promotional events and withdrawal requests

Storefront value propositions

The storefront leads with customer-facing benefits rather than features.

  • Free shipping on orders over $100
  • Daily surprise offers with up to 25% savings
  • Factory-direct pricing
  • Secure payment protection

API Architecture

The REST API is versioned and split by business domain, so each area of the product can evolve without touching the others.

DomainEndpoints
User authentication and profiles/api/v2/user/*
Shop and seller management/api/v2/seller/*
Product catalog/api/v2/product/*
Order processing/api/v2/order/*
Stripe payments/api/v2/payment/*
Messaging/api/v2/conversation/*, /api/v2/messages/*
Coupons/api/v2/coupons/*
Promotional events/api/v2/events/*
Seller withdrawals/api/v2/withdraw-request/*

Tech Stack

Backend

  • Node.js and Express.js for a fast, minimal API server
  • MongoDB with Mongoose for flexible document modelling
  • JWT and bcrypt for authentication and password hashing
  • Nodemailer for activation and notification emails
  • Stripe for payments

Frontend

  • React for the interface
  • Vite for the build tool and dev server
  • Redux Toolkit for predictable global state

Media and real-time

  • Multer for upload handling
  • Cloudinary for cloud media storage
  • Socket.io for chat and live notifications

Tooling and deployment

  • Nodemon and dotenv for local development
  • Vercel for hosting

Database Design

Nine collections model the marketplace. Shops own products, coupons, events and withdrawal requests, while users place orders and take part in conversations.

Entity relationship diagram

Application Flow

A request travels through four layers. The frontend holds UI and Redux state, a communication layer handles CORS, JWT cookies and the WebSocket connection, the Express server routes by domain, and the data layer persists to MongoDB, Cloudinary and Stripe.

End-to-end application flow

User, Seller and Admin Flows

Each role follows its own journey. Customers and sellers both go through email activation before an account is created, so no unverified record ever reaches the database.

Customer flow
Registration, email activation, login and the first shopping actions.
Seller flow
Shop registration and activation, then day-to-day shop management.
Admin flow
Role-checked login followed by user and seller oversight.

Challenges and Solutions

Most of the real learning came from the problems that only showed up once the pieces were wired together.

ChallengeSolution
Sign-up activation tokens expiring for users and sellersTraced it to React Strict Mode double-invoking the activation effect, and adjusted the setup so the token is consumed exactly once.
Modelling errors in the database schemaReviewed and corrected the Mongoose schemas and relationships to match the backend logic, restoring proper validation and storage.
Redux state not receiving dataRebuilt the async actions and state slices in Redux Toolkit so data flows cleanly from the API to the UI.
Stripe payment integration issuesDebugged and validated the full payment flow in Stripe's sandbox environment before going to production.
Image uploadingStarted with local folder uploads, then moved to Cloudinary for scalable cloud-based storage and delivery.
Production errors on Vercel with Node.jsAdjusted the deployment configuration, verified environment variables and resolved server reload issues for stable builds.
LocalStorage managementAdded consistent get and set logic with JSON parsing to store and restore sessions and app state reliably.
Fetching backend data and rendering itStandardised API calls with error handling and used React hooks to render data accurately.
Middleware configurationOrdered and configured the Express middleware for authentication, error handling and body parsing correctly.

Best Practices

Authentication and security

  • JWT tokens in HTTP-only cookies, which keeps them out of reach of XSS
  • Password hashing with bcrypt
  • Sensitive fields such as passwords excluded from queries by default
  • Role-based authorisation restricting admin-only operations

Component architecture

  • Separation of concerns through modular React components
  • Clean state management across customer, seller and admin flows
  • Protected routes enforcing access control per role

Error handling and user experience

  • Graceful error handling for cart and product operations
  • Stock validation so unavailable products cannot be added
  • Toast notifications for immediate feedback
  • Duplicate prevention in the cart

Conclusion

ShopO is a complete, production-deployed marketplace rather than a storefront demo. It unites customers, sellers and administrators in one ecosystem, and pairs a rich feature set with secure authentication, a modular architecture and real deployment practices, which leaves it well prepared for real-world use and future growth.