Our own product · Marketplace

UniMarket, a marketplace built for Bangladesh.

Many sellers, one cart. Shoppers pay cash on delivery, follow each shop’s shipment, and get an email at every step. Sellers run their own shop from a Seller Center, and the team runs the whole marketplace from an admin panel. It is in Bangla and English, installs like an app, and runs on our own server.

Live in early access at unimarket.22softwares.com, with a demo catalogue. A unimarket.bd domain is planned.

  • Web
  • Installable app (PWA)
  • বাংলা · English
  • Light & dark
languages, Bangla and English, on separate addresses
2
categories, from fashion to digital downloads
34
shop themes sellers can switch between
10
order steps, with an email at each: placed, confirmed, packed, shipped, delivered
5

The live marketplace

Screenshots of the public store, taken from the live site. The catalogue is demo data while the marketplace is in early access.

  • Homepage on a phone
    Homepage on a phone
  • Homepage on a phone, Bangla
    Homepage on a phone, Bangla
  • All offers on a phone
    All offers on a phone

What shoppers, sellers and the team get

  • One cart, many shops

    A shopper checks out once. The order splits into one shipment per shop, each with its own delivery charge and its own status. Guests can order without an account, and cash on delivery is the default payment.

  • Tracking without logging in

    Every order has a number (UNI-3001 and up). Anyone with the number and the last four digits of the phone can see where it is, and the buyer gets an email whenever a shipment changes status.

  • A Seller Center for every shop

    Sellers list products, services and digital downloads, handle orders from confirm to ship, print invoices and labels, see earnings and withdraw them, and design their shop page with 10 themes and a block-based page builder.

  • Growth tools built in

    Flash sales and campaigns sellers can join, platform and shop vouchers, sponsored products paid per click from a wallet, a newsletter, push notifications and printable QR flyers for each shop.

  • An admin panel that runs the marketplace

    Orders, seller applications and ID checks, product review, payouts, campaigns, the home page and banners, visitor and checkout statistics (including abandoned checkouts), staff roles with two-step sign-in, and an audit log.

  • Installable and fast on slow phones

    It installs from the browser like an app, has a bottom tab bar on phones, works on slow connections and can send order updates as push notifications.

One codebase, four surfaces

The store, the Seller Center, the admin panel and the installable app all run from one TypeScript project on our own server.

  1. Storefront

    Server-rendered pages with very little client JavaScript, a separate address for each language with hreflang, structured data, sitemaps and a Google Merchant product feed.

    • Next.js 16
    • React 19
    • TypeScript
    • Tailwind CSS 4
  2. Seller Center and admin

    Two sign-in worlds on one codebase: sellers see only their own orders and products, staff sign in with a password and an authenticator code and get exactly the permissions of their role.

    • Server actions
    • Zod
    • TOTP
    • Audit log
  3. Data

    MongoDB with its own instance, authentication on and a least-privilege app user. Money is stored as whole poisha, never as decimals, and orders reserve stock atomically.

    • MongoDB
    • Mongoose
    • sharp
  4. Sign-in and messages

    Shoppers sign in with a one-time code by email or phone, or with Google or Apple. Order emails are DKIM-signed from our own mail server, and push notifications go through Firebase Cloud Messaging.

    • Firebase Auth
    • FCM
    • Postfix
    • OpenDKIM

Operations

We run it ourselves

Own database, own backups, own mail setup and a one-command deploy with a one-command rollback.

  • Hosted on our own VPS behind Cloudflare, with a Let’s Encrypt certificate and nginx in front of the app.
  • Its own MongoDB service, bound to the server itself with authentication on, backed up every night and kept for 14 days.
  • Rate limits on sign-in and on the API at the web server, plus per-user limits in the app.
  • Order emails pass SPF, DKIM and DMARC and land in the inbox, not in spam.
  • A one-command deploy that builds on the server, switches over and health-checks, and a one-command rollback to the previous release.

Hard problems we solved

The parts shoppers never see.

  1. Fast pages in Bangla

    The problem
    A Bangla web font is large. We measured one at about 200 KB on the way to a first design.
    What we did
    We use the Bangla font that is already on the phone or computer, and a small self-hosted font only for Latin letters and numbers.

    Result The web font cost more than ten points of the mobile Lighthouse performance score in our test, and the system font costs none.

  2. One checkout, several sellers

    The problem
    A cart can hold items from several shops, each with its own stock, delivery charge and status, and a double tap must not place two orders.
    What we did
    Checkout re-prices everything from the database, reserves stock atomically, splits the order into one shipment per shop and ignores a repeated submit.

    Result Each seller sees only their shipment, the buyer sees one order with a timeline per shop, and cancelling returns the stock.

  3. Updates without breaking open tabs

    The problem
    After a deploy, a shopper who left a tab open can click a button that belongs to the old version and see an error.
    What we did
    Each release carries its own deployment id, and the page reloads itself when it notices that its actions are from a release that is gone.

    Result We can deploy during the day without anyone seeing a broken button.

Tested like a product, not a demo

  • Lighthouse in our local production build: Accessibility, Best Practices and SEO at 100 on every page we tested, Performance 93 to 98 on mobile.
  • A security review of the whole app, with the account-takeover findings fixed first and the medium findings after.
  • Real order, cancel and tracking flows tested end to end on the live site, including the emails each step sends.
  • Type checks and unit tests for phone validation and money handling, and a build that fails when a Bangla string is missing.

Technology

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • MongoDB
  • Firebase
  • nginx
  • Postfix
  • Cloudflare

chessGM: a chess platform we built and run

See all our work

Want a marketplace built this way?

We design, build and run multi-seller stores end to end: storefront, seller tools, admin, payments, delivery, email and hosting.