Medusa v2 · Next.js 16 Jewellery & Luxury Retail

DONJ Jewellery: Medusa + Next.js Headless Rebuild with a 100K+ Diamond Marketplace & Custom Ring Builder

A full ecommerce rebuild for DONJ Jewellery, replacing the legacy WordPress and WooCommerce storefront with a modular headless platform using Medusa v2 and Next.js 16.

The new platform brings the ring builder, live diamond inventory, multi-currency pricing, deposits, payments, search, content and customer accounts under one backend pricing authority—so the price shown to the customer stays aligned from diamond selection through payment.

DONJ Jewellery headless commerce case study by Dynamic Dreamz
Project

DONJ Jewellery – Headless Ecommerce Rebuild, Ring Builder & Live Diamond Marketplace

Industry

Jewellery & Luxury Retail

Technology

Medusa v2 · Next.js 16

Location

Canada

Key Metrics / Project Facts

1.1s

PDP load time, from 4.2s

100K+

Live diamonds in the marketplace

2.8%

Mobile conversion, from 1.2%

0

Pricing disputes / month, from 12
Client Challenge / Objective

The Challenge

DONJ's original WordPress and WooCommerce storefront still functioned, but the architecture had accumulated performance, pricing, content and integration constraints. The rebuild needed to solve the underlying commerce system—not simply redesign the interface.

01

The monolithic WordPress + WooCommerce storefront suffered from slow page loads, plugin conflicts and limited scalability.

02

The PHP / jQuery engagement-ring builder had become difficult to maintain and was prone to pricing bugs.

03

The diamond feed was hardcoded inside templates, making supplier changes and lab-grown expansion difficult.

04

The store operated in CAD while the live diamond feed priced in USD, creating a complex multi-currency pricing problem.

05

High-ticket ring purchases had no deposit or partial-payment workflow.

06

Marketing depended on developers for homepage and content updates.

07

Frontend and backend pricing could drift, creating a trust problem when displayed and charged prices did not match.

08

The legacy architecture lacked server-side rendering, strong Core Web Vitals and structured-data support.

Our Solution

How We Rebuilt the Commerce Platform

Next.js 16 renders the customer-facing storefront while Medusa v2 owns commerce logic, pricing and integrations. This separation gave DONJ a modular platform without allowing different parts of the stack to calculate independent prices. Product configuration, currency conversion, upgrades, cart totals and payment amounts all resolve back to the same backend authority.

01

Replatformed the storefront from WordPress + WooCommerce to a headless Next.js 16 frontend with Medusa v2 as the commerce backend.

02

Made Medusa the single pricing authority so the display price, cart price, order price and gateway charge resolve from the same backend logic.

03

Integrated PostgreSQL, Nivoda, Algolia, Converge and PayPal as independent services around a modular commerce core.

04

Built custom commerce modules for the engagement-ring builder, deposit schedules, upgrades, customer accounts and live diamond purchasing.

05

Separated content from the old WordPress runtime using Gutenberg-style blocks rendered by typed React components.

06

Introduced a layered caching and search architecture so the 100K+ diamond catalog could be browsed and filtered quickly.

Platform Architecture

Backend as the Single Pricing Authority

Nothing prices a product independently on the storefront. Next.js presents the experience; Medusa controls commerce logic and communicates with the database, payment gateways, diamond supplier and search layer.

Core rule:

Display price = cart price = order price = gateway charge.

Storefront Next.js 16
↕
Commerce Backend Medusa v2
↕
Database PostgreSQL
Diamond Feed Nivoda
Search Algolia
Payments Converge + PayPal
CMS Gutenberg Blocks
Infrastructure Docker · PM2 · Turborepo
Key Features

Ten Core Commerce Systems Delivered

The build combined complex configuration, live supplier data, search, pricing, payments, content and customer-account functionality into one coordinated platform. The key architectural principle remained the same across all ten systems: one backend source of truth.

01

Engagement Ring Builder

Customers design a ring in three steps: select a diamond from the live Nivoda feed, choose a setting by metal and style, then review the configuration, add upgrades and check out. A single backend price-derivation function applies discounts, converts the USD diamond price at the locked exchange rate and returns one whole-dollar total.

The rebuilt flow keeps display price = cart price = order price = gateway charge.
02

100K+ Diamond Marketplace

A scheduled job imports more than 100,000 Nivoda stones into Medusa with certificate numbers, measurements and delivery data. Shoppers can filter by shape, carat, color, clarity and cut, view GIA / IGI certificates and 360° media, compare stones and then move a selected diamond into the ring builder.

03

Multi-Currency, Whole-Dollar Pricing

The store base currency is CAD while the diamond feed prices in USD. Exchange rates are cached server-side for one hour. Ring pricing, diamond conversion and upgrade calculations are rounded consistently so values do not drift between storefront and checkout.

Example documented in the source: a CAD 2,885.17 calculated ring is shown and charged as CAD 2,885.
04

Deposit & Partial Payment Plans

For high-ticket orders, a custom Medusa module splits the order into whole-dollar installments. Each installment is floored and the final payment absorbs the rounding remainder so the schedule always adds back to the exact order total.

The pay-now flow unlocks each later installment only after the previous payment clears.
Order Total Deposit Example Schedule
$1,000 30% 3 × $300 + $100
$9 50% $4 + $5
05

Converge + PayPal Payments

Converge hosted Lightbox handles Canadian cards while keeping card data away from DONJ's servers. PayPal supports international shoppers and returning-customer vaulting. Both gateways use the backend-calculated order amount.

06

CMS Blocks & Marketing Autonomy

Content lives in Medusa through Gutenberg-style blocks and is rendered by typed React components. Hero banners, product grids, trust content and educational modules can publish without the previous WordPress runtime or routine developer involvement.

07

Wishlist & Customer Accounts

Logged-in wishlists persist and sync across devices while guests receive a session-based version. Customer accounts include order history, addresses, deposit schedules with pay-now actions and support for transferring an order between accounts for gifting.

08

Ring Upgrades

Engraving, rush delivery, insurance and gift packaging are priced as percentages of the effective ring price. Grouped upgrades are mutually exclusive where required, and the same pricing logic is used across frontend and backend.

09

Algolia Search & Discovery

Products, diamonds and categories are indexed nightly into Algolia, powering autocomplete, faceted filtering and 'did you mean' suggestions across category and diamond discovery experiences.

10

Transactional Email & Reminders

Resend sends order confirmations, shipping updates and deposit reminders using custom MJML templates, with scheduled jobs tracking which reminders have already been delivered.

Performance & Security

Fixing the Infrastructure Beneath the Storefront

The legacy diamond experience called Nivoda directly on every request. With more than 100,000 stones, filters could take 8–15 seconds. The new architecture introduced layered caching and a dedicated search index, while the security model moved away from years of plugin-driven risk.

Layered Caching, Not One Switch

Inventory synchronization, search indexing, page rendering, client-side queries and browser assets each use the cache layer that best matches the data.

Nivoda Sync Full catalog → PostgreSQL Nightly · 2am
Algolia Index Search-optimized records Nightly rebuild
Next.js ISR Diamond filter & detail pages 1 hour
React Query Filter results & favorites 5 min
Browser Cache Images & certificate PDFs 30 days
Result documented in the source: the diamond filter page loads in under 800ms at p95, with subsequent filters hitting Algolia at roughly 150ms.

Security by Architecture

The rebuild reduced dependence on aging plugins and shifted controls into the application, payment and infrastructure layers.

Hosted Card Fields Converge Lightbox + PayPal keep card data away from DONJ's servers.
Dependency Control No third-party CMS plugin stack; dependencies audited in CI.
Data Access Medusa ORM with parameterized, type-safe queries.
XSS / CSRF Same-site cookies, auto-escaped output and CSP headers.
Secrets Environment variables and CI secrets management.
Admin Access SSO with 2FA and production access restrictions.
CORS Strict origin allowlist in Medusa configuration.
Bot Protection WAF-level detection and rate limiting on sensitive endpoints.
The source also records PCI SAQ-A attestation, zero post-launch security incidents and no critical or high findings in a Q3 2026 penetration test.
Key Features

What Changed After the Rebuild

The project produced measurable improvements across speed, mobile conversion, pricing accuracy, high-ticket payment flexibility and marketing autonomy.

1.1ss PDP load time from 4.2s — 74% faster
1.1 Builder → cart attempts from 3 failed attempts — 63% fewer
38% Deposit-plan adoption of orders over $3K
2.8% Mobile conversion from 1.2% — 2.3× lift
5 min Content publish time from 2 days — 99% faster
0 Pricing disputes / month from 12 per month — eliminated 0
Team & Process

A Cross-Functional Delivery Team

×2 Backend Engineers
×2 Frontend Engineers
×1 DevOps
×1 QA
×1 Product Owner

Pricing decisions were documented before implementation.

Every currency and rounding decision was logged in a running DECISIONS.md before development. Backend modules and APIs were implemented first, followed by frontend features, visual regression testing, staging UAT against real Converge and PayPal sandboxes, and then production release.

01 Document currency, rounding and commerce rules before code is written.
02 Build the Medusa backend module and API first.
03 Implement the Next.js customer experience against the same backend logic.
04 Run visual regression and functional QA.
05 Complete staging UAT against real payment sandboxes before production.
Key Features

Project Delivery & Technology

Service Delivered
Headless Commerce Architecture
Service Delivered
Full-Stack Ecommerce Development
Service Delivered
Custom Engagement Ring Configurator
Service Delivered
Third-Party API Integration
Service Delivered
Custom Payment & Deposit Modules
Service Delivered
Search & Discovery Integration
Service Delivered
Performance Engineering
Service Delivered
DevOps, QA & UAT
Technology Stack
Medusa v2 · Next.js 16 · PostgreSQL
Integrations
Nivoda · Algolia · Converge · PayPal · Resend
Infrastructure
Docker · PM2 · Turborepo · React Query
Industry
Jewellery & Luxury Retail
Project Takeaway

Headless was not the goal. Reliable commerce was.

The platform evolved through documented decisions, one shared pricing authority and a focus on whole-dollar accuracy. The architecture is modular enough to change payment providers, diamond suppliers or CMS components without rewriting the commerce core.

Marketing owns content. Engineering owns correctness. Customers get one consistent experience from a lower-ticket jewellery purchase through a high-value custom engagement ring.

Because in jewellery, even a one-dollar pricing mismatch can become a broken promise.