KandyLover Swedish Candy E-commerce Rebuilt on Next.js 15

Migrated a plugin-heavy WooCommerce candy shop to a custom Next.js 15 storefront with a live build-your-own-box builder, 7-market multi-currency checkout, and a 32+ module admin dashboard. Faster pages, full control, no plugin tax.

TYPE E-COMMERCEYEAR 2025
View project website
kandylover.com — live
KandyLover — Swedish Candy E-commerce Rebuilt on Next.js 15
STACKNext.js 15 App RouterReact 18TypeScriptDrizzle ORMMySQL 8StripePayPalAWS S3ResendNodemailernext-intlVercel

Project overview

KandyLover is a Swedish candy e-commerce brand that outgrew WooCommerce. I rebuilt it from the ground up on Next.js 15 — a custom storefront with a real-time build-your-own candy box builder, native checkout across 7 markets (JPY, AUD, USD, CAD, AED, QAR, SAR), a 4-language storefront (English, Japanese, Arabic, Swedish with RTL), and a 32+ module admin dashboard that runs the whole business. The migration cut page load roughly 25-30% and replaced a stack of paid plugins with code the team actually owns. It's live today.

CLIENT
KandyLover
INDUSTRY
E-commerce — Swedish Candy / Pick-and-Mix

Results

RESULT
~25-30%
Faster than the WooCommerce stack
RESULT
3.5s to 1.8s
Largest Contentful Paint
RESULT
7
Markets supported (JPY, AUD, USD, CAD, AED, QAR, SAR)
RESULT
32+
Custom admin modules replacing plugins

The challenge

KandyLover was running on WordPress/WooCommerce and the plugin stack was eating the business alive. Every feature — multi-currency, the candy-box idea, loyalty, the live spin-wheel — meant another plugin, another subscription, another thing that could break on update. Pages were slow, the admin was a patchwork, and nobody truly owned the code. They needed a real store that could do pick-and-mix the way customers actually shop, sell across multiple markets, and let staff run everything from one place — without paying a plugin tax to do it.

What I built

Migrated the full store off WooCommerce onto a custom Next.js 15 App Router storefront with TypeScript and Drizzle ORM on MySQL 8
Real-time build-your-own candy-box builder with live weight tracking as customers add and remove items
Native multi-currency engine across 7 markets — JPY, AUD, USD, CAD, AED, QAR, SAR — with locale-aware tax and shipping logic, no third-party plugin
4-language storefront via next-intl — English, Japanese, Arabic, Swedish — with full RTL support
Custom admin dashboard with 32+ management modules covering orders, products, inventory, customers, coupons, gift cards, box tiers, blog CMS, SEO manager, staff roles, audit log, and analytics
Stripe and PayPal payments wired in directly with idempotent webhooks
Gamification and loyalty system — spins, points, referrals, and membership tiers — to drive repeat purchases
Live-stream commerce with an on-stream spin wheel for selling during broadcasts
Abandoned-cart recovery with transactional email via Resend and Nodemailer
Staff RBAC with an audit log, plus automated S3 backups for store data and assets

Key features

BUILD-YOUR-OWN CANDY BOXLIVE WEIGHT TRACKING7-MARKET MULTI-CURRENCY4-LANGUAGE STOREFRONT (EN/JA/AR/SV)32+ ADMIN MODULESSTRIPE + PAYPALGAMIFICATION & LOYALTYLIVE-STREAM COMMERCESPIN WHEELABANDONED-CART RECOVERY

Replaced a fragile 15-plugin WooCommerce setup with a single Next.js app. No more plugin conflicts, no more $200/mo in plugin licenses, no more slow checkout.

KandyLover engineering brief

Discuss this project

Want the same stack on your site? Fill this out to get started.

The same stack is what I install for clients — live on your site in 14 days.