Skip to content
Your Iyanatlive capture
The deployed Your Iyanat storefront: an offers and giveaway banner above a hero section with jewellery collection imagery, followed by category tiles for bracelets, earrings and necklaces.
Individual projectLive on Vercel

Your Iyanat

A jewellery storefront built for the Bangladeshi market, with checkout and after-sales workflows.

An individual e-commerce build for a luxury ornament retailer: six jewellery categories, Taka pricing, four-zone delivery, coupon and flash-sale logic, order tracking and an after-sales surface, backed by a PostgreSQL database modelled with Prisma.

Role
Built the frontend and the API, including the schema, validation layer and checkout flow.
Source status
Reported — The deployment is public and was inspected, but the frontend and backend repositories are not published, so the data model and API internals could not be read.
Next.jsReactTypeScriptNode.jsExpress.jsPostgreSQL

+3 more in the case study

4 min read · 10 sections · 10 technologies

Your Iyanat is a luxury jewellery store aimed at the Bangladeshi market. The interesting constraint was never the catalogue; it was the checkout. Prices are quoted in Taka, delivery is priced by zone, and the payment methods a Bangladeshi customer actually uses are mobile financial services and cash on delivery.

This page is written carefully: the storefront is public and I have inspected it directly, but the application code is not published, so anything about internals is marked as reported rather than verified.

What the product does

  • Six jewellery categories

    Bracelets, Bangles, Earrings, Pendants, Necklaces and Rings, with a gift finder to route shoppers to a starting point.

  • Taka-native pricing

    Prices render with the ৳ symbol, for example Eclipse Bangle ৳ 960 and Lunar Ring ৳ 3,200.

  • Delivery pricing

    A flat ৳50 Delivery Anywhere charge advertised across Bangladesh, alongside a reported four-zone model in the application logic.

  • Coupon and flash-sale logic

    IYANAT15 is surfaced as 15% off with a minimum order of ৳500, alongside member-only flash sales.

  • Order tracking and after-sales

    Dedicated Track Order, Returns, Custom Orders and After-Sales surfaces, plus a concierge help channel.

  • Local payment methods

    The storefront states Pay safely with bKash, Nagad, cards, or cash on delivery.

Architecture

  1. 01Next.js storefrontApp Router, Turbopack build
  2. 02Express APIJWT-authenticated routes
  3. 03Prisma clientTyped access layer
  4. 04PostgreSQLJewellery, orders, users
Storefront, API and relational store are three deployable concerns.

The deployed storefront is a Next.js App Router application; 374 static chunks and a Turbopack chunk are present in its HTML, with no client-side data-fetching library in use.

Choosing PostgreSQL and Prisma over a document store is the decision that shaped most of this project. A jewellery catalogue is relational in a real way: an order has line items, a line item points at a variant, a variant carries its own stock, and a customer can have many orders. Document modelling that shape means either duplicating data or assembling it on every read.

Engineering notes

Validation at the boundary

Zod sits between the HTTP layer and the database. The reason to validate there rather than in the database is that the schemas describe intent: a coupon payload is not just any object, it is a code, a percentage, an expiry and a minimum. Expressing that in one schema means the route handler, the type inference and the runtime check all agree, and an invalid payload is rejected before it can reach a transaction.

Delivery zones as a pure function

Four-zone delivery pricing is the kind of rule that reads like data and behaves like code. The useful move is to keep it as a pure function that takes a district and a cart total and returns a number, so that the checkout screen, the order creation endpoint and the admin estimate all call the same implementation instead of three copies of the same conditional.

Checkout and payment

The reported integration is SSLCommerz, which is the gateway that fronts bKash, Nagad and card payments for Bangladeshi merchants. That matches what the storefront advertises to customers. The shape of the flow is the standard one: create an order in a pending state, hand the customer to the gateway, and move the order to paid only when the gateway calls back. The callback is the only thing that should be allowed to mark an order as settled.

Role-based access

The application distinguishes customer, admin and seller capabilities using JWT-based auth. The admin surface adds business statistics and low-stock workflows on top of the catalogue, which is the part that makes the difference between a storefront and a shop that its own staff can run.

Trade-offs

  • A relational store for a read-heavy catalogue. Prisma and migrations cost more upfront than a document store, but order and stock integrity are enforced by the database rather than by application discipline.
  • A separate API service. More deployments and one more network hop, in exchange for a clean boundary and a backend that can move independently of the storefront.
  • Server-rendered marketing surface. The homepage ships its full copy in the HTML, which is what makes it indexable; the trade is that the cached HTML is regenerated whenever catalogue or promotional data changes.

Verification status