← Back to work
Case study · Multi-tenant jewellery marketplace

Sadashri Jewelkart

A multi-vendor jewellery marketplace built as four apps, an admin dashboard, a seller portal, a buyer web app, and a native Flutter app, all sharing one PHP API and one live gold and silver pricing engine instead of static price tags.

Client
Sadashri Jewelkart
Based in
India
What we built
Admin, Seller & Buyer web apps + a Flutter app on one PHP API
Multi-tenant marketplace · Admin · Seller · Buyer · Mobile
The brief
Jewellery doesn't have
a fixed price tag.

Sadashri Jewelkart needed a marketplace that could onboard independent sellers of gold and silver jewellery, let buyers shop across all of them from the web or a native app, and give the platform itself a way to manage rates, payouts, and quality, all without turning into a handful of disconnected products.

The catch is that jewellery pricing isn't static. Gold and silver rates move daily, and a product's real price depends on purity, weight, and making charges on top of that day's rate. A template e-commerce build with fixed price fields wasn't going to hold up, the platform needed pricing logic built into its core, not bolted on.

The build
Four apps,
one source of truth.

We built three separate React applications, one each for admins, sellers, and buyers, plus a native Flutter app for buyers on mobile, all deployed independently but reading and writing through the same hand-rolled PHP API. That let each app move at its own pace without the marketplace ever losing a single, consistent record of products, rates, and orders.

Admin control centre
Product and category management, seller/organization oversight, coupon management, review moderation, and payments, all from one dashboard.
Seller onboarding & catalog tools
A multi-step registration flow (company, address, bank, store details) with OTP login, plus product add/edit with variants, rich-text descriptions, and image cropping.
Buyer web storefront
Browsing and search, cart and wishlist, Razorpay checkout, an in-app wallet, coupons, and pincode-based delivery estimates, shipped as an installable PWA.
Native Flutter buyer app
A dedicated mobile app covering browsing, cart, checkout, wallet, wishlist, and support tickets, built with Flutter and talking to the same API as the web storefront.
A hand-rolled PHP API core
A custom-routed REST API, not an off-the-shelf framework, versioned at v1.0.0 and split by role (admin, seller, user, scheme, webhooks), backed by MySQL with JWT auth.
One shared pricing core
A single backend service computes every product's price from purity, weight, making charges, and the day's rate, so admin, seller, web, and mobile all read the same number.
Set the rate once,
every price updates itself.

Gold and silver rates change daily. Repricing every listing on a marketplace by hand every morning, across every seller and every purity, isn't something a growing platform can sustain.

Instead, price is calculated, not stored. Sellers set purity and weight once per product; a backend pricing service holds the day's rate and computes the rest, GST included. Change the rate and every listing across every seller reflects it immediately, on the seller app, the buyer web app, and the Flutter app alike, with no manual repricing anywhere in the marketplace.

→
STEP 1
Admin sets the day's rate
One screen holds live and historical rates for 24k, 22k, 18k, 14k, and 9k gold plus silver, updated as often as the market moves.
→
STEP 2
Sellers define purity & weight once
A price-breakout calculator shows sellers exactly how weight, purity, and making charges resolve into a final price before they list.
STEP 3
Every listing updates automatically
Buyers always see today's real price, computed live from the current rate, with no seller ever needing to touch a product listing again.
Under the hood
Built for four
very different surfaces.

Past the pricing engine, each app and the backend behind it carries its own domain-specific tooling, from a seller onboarding flow that doubles as light KYC, to a buyer-side savings product that turns jewellery into a recurring purchase.

Gold savings schemes
A recurring gold-purchase product on the buyer side: enrollment, a payment schedule, and a simulation dashboard so buyers can accumulate toward a purchase over time instead of paying for it all at once.
Seller settlement & payouts
Sellers see settlement lists and per-payment detail views tied directly to their bank details captured at onboarding, so payouts trace back to a real, verified account.
Order lifecycle on every side
Sellers manage fulfillment through their own order and settlement views; buyers track the same order end to end, on web or mobile, with pincode-based delivery estimates.
SMS OTP-based auth & onboarding
Sellers register through a guided multi-step flow covering company, address, bank, and store details, with SMS one-time-passcodes handling verification throughout.
Native Flutter app, same backend
Built with Flutter, Provider, and Dio, the mobile app covers browsing, cart, checkout, wallet, wishlist, and support tickets against the same versioned API as the web storefront.
Admin oversight & moderation
Coupon management, product review moderation, and organization-level controls give the platform a way to keep quality consistent across every seller.
Wallet, wishlist & coupons
An in-app wallet and wishlist sit alongside coupon support on both the web and mobile buyer apps, on top of standard cart and Razorpay checkout.
One API, four independent apps
Admin, seller, buyer web, and the Flutter app ship and scale on their own schedules, while all four stay backed by one versioned, role-segmented PHP API.
AI-assisted product descriptions
An OpenAI-backed endpoint helps sellers draft product descriptions, cutting down the time it takes to get a new listing from photo to published.
Automated PDF invoicing
Orders generate PDF invoices and emailed confirmations automatically, rather than a seller or admin producing them by hand for every sale.
Delhivery shipping integration
Shipment creation ties directly into Delhivery's courier network, so fulfillment doesn't depend on anyone manually booking a pickup per order.
Content & policies, on WordPress
A separate WordPress site at blogs.sadashrijewelkart.com carries the blog along with privacy policy, terms of service, shipping & returns, and the seller registration guide, linked directly from the seller portal.
Not a demo,
a running marketplace.
Four apps, one platform
Admin, seller, and buyer web apps plus a native Flutter app, each its own deployment, all reading and writing through one shared PHP API.
~490 source files across the stack
Roughly 175 React files across the three web frontends, 89 Dart files in the Flutter app, and 228 files in the PHP backend.
Live pricing, not static tags
Every product price derives from purity, weight, and the day's gold or silver rate, across five gold purities and silver.
Tech stack
Tools we shipped with.
ReactMUITailwind CSSSassFlutterProviderDioHivePHPMySQLJWTRazorpayOpenAI APIPHPMailerDompdfFramer MotionReact RouterAxiosWorkbox / PWAGoogle Maps APIDelhiveryWordPress
Building something
with real craft behind it?
If your product deserves better than a generic template, that's exactly the kind of build we like.
connect@northboundlabs.cc See more work