Frontend
React SPA — routes for buyers, sellers and admins; shared state via context; optimistic UI on cart and chat. Mapbox GL for the live tracker.
A full-stack marketplace. Many shops. One platform.
Meraki Marketplace is a multi-shop e-commerce platform built on MongoDB · Express · React · Node. Buyers browse and order across many sellers, sellers run their own storefront and dashboard inside the same app, and shipments stream live on a Mapbox map over WebSockets. Final master's project, three developers, six months.
Meraki is built around the idea that one platform can host dozens of independent storefronts. The shop directory lets buyers explore vendors by category and name — each card is a live, self-managed business.

Each vendor gets a full storefront inside the platform — hero slider, featured products, active offers, full catalogue with category filter on the side. Every block is toggleable from the seller dashboard, so vendors compose their own page without touching code.

Product detail page ships with image gallery, description, live stock status, star rating with written reviews and a buy CTA wired straight into the cart. Below it, a related-products strip pulls from the same taxonomy to keep buyers in the funnel.


Sellers get a complete back-office: live sales analytics, product CRUD, order pipeline, shop appearance editor and a featured-products picker. No external tooling — everything from opening the shop to publishing a slider hero lives inside Meraki.


Once an order ships, buyers open the order page and see a live Mapbox view of the courier. A Socket.IO channel pipes a fresh GPS coordinate every ~10 seconds straight from the delivery client into the browser — no polling, no refresh.

Platform admins land on a global dashboard — revenue, orders, users, sellers, products and a live recent-orders feed. The same event pipeline that powers seller analytics aggregates upwards into platform-wide KPIs.

Two repos — React frontend, Express/Node API — communicating over REST and a shared Socket.IO channel. MongoDB for storage, JWT for auth (Google OAuth as fallback), Mapbox for geospatial UI, cron workers for nightly aggregation.
React SPA — routes for buyers, sellers and admins; shared state via context; optimistic UI on cart and chat. Mapbox GL for the live tracker.
Express API exposing auth, shops, products, orders, reviews, analytics and notifications. Socket.IO server bound to the same process for chat & courier pings.
MongoDB document model — shops own products, products own reviews, orders link users to shops. Event collections feed seller and admin dashboards.
Meraki was the capstone of my master's — designed and shipped with two teammates over six months. We split the surface area (frontend, backend, dashboards, real-time), then converged on the integration. The codebase is shared and currently offline, but the patterns — multi-tenant marketplace, event analytics, sockets for live data — still hold up.
Every model lives under a shop scope — sellers never leak into each other's data.
Views, carts, orders — captured as events, aggregated by cron into snapshot collections for fast dashboards.
One Socket.IO server, rooms per shop and per courier — chat and shipment tracking share the same pipe.