A multi-vendor marketplace with a social feed, across four surfaces
A storefront, a social feed and multi-vendor settlement behind one API, delivered as a backend, a web app, an admin panel and a Flutter app.
- Sector
- Multi-vendor e-commerce marketplace
- Engagement
- March 2023 – December 2023
- Node
- Express
- MongoDB
- React
- Vite
- Flutter
- Socket.IO
Context
Two products share one account. A shopper browses vendor catalogues, fills a cart and checks out; the same person also posts, publishes stories, follows stores and messages sellers. Neither half can be bolted on after the fact, because both read the same identity, the same media pipeline and the same notification channel. The harder half is settlement — an order can span several vendors, so money has to be tracked per vendor rather than per order, and that ledger has to survive refunds and returns.
What we built
Backend API
One REST API behind every surface, with Socket.IO for chat and webhook handling for payment events.
Web app
Storefront, social feed and seller-facing pages in the browser.
Admin panel
Catalogue, vendor and order administration on a bought theme.
Mobile app
Shopping, feed, stories, video and in-app chat on Android and iOS.
Architecture
One Express and MongoDB API served all four surfaces: 43 route modules and 49 data models covering catalogue, variants, cart, orders, payments, coupons, shipping, returns and vendor accounts on the commerce side, and posts, stories, comments, follows, chat, search and reporting on the social side. Chat runs over Socket.IO in the same API process, and payment events arrive back as webhooks rather than being polled. Two card providers sit side by side so checkout works in more than one market; push goes through Firebase and media through S3. The web app is React on Vite with Redux Toolkit, and the Flutter app vendors a story-editor package instead of reimplementing one. The admin panel was assembled on a purchased template — the engineering there was wiring it to the API, not designing an interface, and it is worth saying so. The work ran from March to December 2023.
Stack
- Backend API
- Node
- Express
- MongoDB
- Web app
- React 18
- Vite
- Redux Toolkit
- Admin panel
- React 17
- Redux Toolkit
- purchased template
- Mobile app
- Flutter (Dart)
- Provider
- Integrations
- Stripe and Razorpay side by side, so card checkout works in two markets
- Firebase Cloud Messaging for push notifications
- Amazon S3 for product and post media
- Socket.IO for in-app chat between shoppers and sellers
- Nodemailer for transactional email
Scale
Counts that can be re-derived from the same repositories. Nothing here is a business result — a repository cannot evidence one.
- Four delivered surfaces: backend API, web app, admin panel, mobile app.
- 1,472 commits across the four repositories.
- 43 route modules and 49 data models in the API.
- 53 mobile dependencies, on Dart SDK >=2.18.5 <3.0.0.
Where the evidence stops
- The admin panel was assembled on a bought template and is described as such rather than as bespoke interface work.
- No revenue, order volume, vendor count or conversion number appears here, because the source material cannot prove one.
Evidence
Each statement above, and the artefact it was read from. The client cannot be named, so the sources are given instead.
4 surfaces delivered — backend API, web app, admin panel, mobile app.
SourceOne repository per surface, each carrying application code on its default branch
1,472 commits across the four repositories.
SourceSum of history.totalCount on each repository's default branch (GitHub GraphQL)
43 API route modules.
Sourceroutes/ directory listing on the backend repository
49 data models.
Sourcemodels/ directory listing on the backend repository
53 mobile dependencies, on Dart SDK >=2.18.5 <3.0.0.
Sourcepubspec.yaml on the mobile repository
Engagement span: 24 March 2023 to 27 December 2023.
SourceFirst and last commit dates on the default branches
Related capability