KandyLover Next.js Custom E-commerce

Headless Next.js 15 e-commerce platform for a Swedish premium candy brand. Replaced WooCommerce with a custom platform: admin dashboard, box builder, multi-currency, Stripe + PayPal, and a live spin-the-wheel TikTok mechanic.

Project Type: Web Apps
Platform: Next.js 15 + Drizzle ORM
Tech Stack: Next.js 15, TypeScript, Drizzle ORM, MySQL, Stripe, PayPal, Resend, AWS S3, Tailwind, Radix UI
Year: 2025
KandyLover - Next.js Custom E-commerce

Project Overview

KandyLover sells premium Swedish candy across 7 markets — Japan, Australia, USA, Canada, UAE, Qatar, Saudi Arabia — with a live TikTok/YouTube stream every Saturday where customers spin a prize wheel. The original WooCommerce setup needed 15+ plugins to handle multi-currency, custom box building, gift cards, abandoned carts, referrals, live streaming integration, and multi-language storefronts. It was slow, fragile, and impossible to extend. I rebuilt it from scratch as a single Next.js 15 application with a custom admin dashboard. No plugins. Everything works as one system.

Client
KandyLover — Marcus (Founder), Sweden
Industry
Premium D2C E-commerce · Live Commerce

The Challenge

A WooCommerce store running 15+ plugins for multi-currency, custom box builder, gift cards, abandoned carts, spin-the-wheel, referrals, live stream integration, and 4-language storefronts. Plugins fought each other, performance was slow (4s+ LCP), and adding the weekly TikTok Live spin-wheel was impossible without writing custom code anyway. The client was paying for plugins, performance, and patience he no longer had.

What I Built

  • Rebuilt the entire storefront as a single Next.js 15 application — no plugins, no WooCommerce, no WordPress
  • Custom admin dashboard with 32+ management modules (orders, inventory, boxes, hero, blog, SEO, staff, abandoned carts, spin-wheel, referrals, social proof, audit log)
  • Custom Box Builder: customers drag-and-drop 50+ candies into Splash / Spark / Storm tiers with live weight tracking and per-gram pricing
  • Multi-currency engine: JPY, AUD, USD, CAD, AED, QAR, SAR with locale-aware tax + shipping logic — no third-party plugin
  • Live stream integration: real-time `/api/live` polling, pink countdown bar transitions to red LIVE state on Saturdays at 19:00 JST
  • Spin-the-wheel mechanic: every box purchase = 1–3 wheel spins + 1–3 grand-prize entries, redeemed live on TikTok/YouTube
  • 4-language i18n via next-intl: English, Japanese, Arabic, Swedish — with RTL support
  • Headless payments: Stripe Elements + PayPal SDK, idempotent webhooks, abandoned cart recovery emails via Resend
  • CSRF protection, JWT auth via jose, bcrypt password hashing, audit logs on all admin actions
  • Gift cards, coupons, referrals, points, membership tiers, wishlists, reviews — all custom, all native

Key Features

Custom Box Builder (3 tiers × 50+ candies)Live Spin-the-Wheel TikTok integrationMulti-currency (7 markets)Multi-language (EN/JA/AR/SV)32+ Admin modulesStripe + PayPal checkoutAbandoned cart recoveryGift cards + coupons + referralsMembership tiers + pointsLive blog + journal CMSInventory managementSEO admin + dynamic sitemapAudit log + backup systemEmail automation (Resend)Phone OTP + JWT authRecharts analytics dashboard

Results

4.2s → 0.9s
LCP improvement
15 → 0
Plugins removed
7 countries
Markets supported
32+
Admin modules
$0
Monthly plugin cost

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

Fill out the form below to get started.