Featured case study/2025

Enterprise Shopware 6 storefront for Horizon Plus.

How a small frontend team rebuilt a multi-region eCommerce surface on Shopware 6 — cutting time-to-interactive by ~40%, ditching the legacy theme, and giving merchandisers a dashboard they actually wanted to use.

Client
Horizon Plus
My role
Frontend Developer
Timeline
Oct 2025 — Present
Team
2 FE · 2 BE · 1 PM
Status
Live in production
https://horizon-plus.shop / collection / ss26
SS26 DropFEATURED COLLECTION · 24 ITEMS
Shop now →
Aria Linen Shirt
€ 89.00
Coast Knit Tee
€ 64.00
Field Trousers
€ 129.00
01 /

The brief

// what we were asked to do

Horizon Plus is a multi-region fashion brand selling across the EU, UK, and the Middle East. Their existing storefront — built on a heavily customised Shopware 5 theme — was slow to load, difficult to update, and locked their merchandising team into a CMS none of them enjoyed using.

I joined to lead the frontend rebuild on Shopware 6, with a brief to modernise the storefront, move marketing surfaces to Next.js, and ship a merchandising dashboard the ops team could actually drive without help.

The promise: a fast, multi-region storefront that the merchandising team can update without filing a ticket, ready to survive Black Friday without an emergency war room.
02 /

The challenge

// before → after
Before

A slow, brittle storefront the team had outgrown.

  • LCP > 4.2s on mid-tier phones — Core Web Vitals fully red.
  • Hard-coded Shopware 5 theme. Every copy change needed a developer.
  • No design system. UI drift across regions, inconsistent buttons everywhere.
  • Merchandisers exporting CSVs to Excel and emailing changes back to engineering.
After

A typed, themed, dashboard-first storefront.

  • LCP 1.9s on mid-tier phones — green across all CWV.
  • Shopware 6 + custom Twig theme + Next.js marketing head.
  • One token-based design system shared across web, dashboard, and email.
  • Self-serve dashboard — merchandising publishes drops without filing a ticket.
03 /

The approach

// three pillars

Design system first

Token-driven theme on Shopware 6 + a matching Tailwind layer on Next.js — one source of truth for spacing, type, and color across every surface.

Performance budget

Per-route JS budget enforced in CI. Route-level code splitting, image presets, and a thin Twig layer — no shipping until the page hits its target on a throttled 4G run.

Self-serve dashboard

A dashboard built for merchandisers — drop scheduling, hero swaps, region overrides — with role-based access, audit logs, and a friendly Twig-free editor.

04 /

How it shipped

// 8-week rebuild
  1. Audit & teardown Week 1

    Walked the legacy storefront screen by screen. Mapped every CMS field, every regional override, every emergency hack. Wrote the deletion list before writing the build list.

  2. Design tokens + component library Weeks 2–3

    Shipped a token layer (typography, spacing, color, motion) that compiles to both the Shopware Twig theme and a Tailwind preset for the Next.js head. Built 22 base components.

  3. Storefront rebuild Weeks 3–6

    Re-implemented the product, category, and checkout flows. Replaced the regional overrides with a feature-flag store. Each route shipped behind a perf budget enforced in CI.

  4. Merchandising dashboard Weeks 5–7

    Built the ops dashboard in parallel — drop scheduling, hero swaps, region overrides, audit log. Spent two afternoons sitting next to the merchandising lead instead of guessing.

  5. Soft launch + hardening Week 8

    Rolled out region by region behind a feature flag. Watched the dashboards. Fixed the long tail. Killed the legacy theme. Went home and slept.

05 /

The numbers

// measured after 6 weeks live
Time to Interactive
40%
4.2s → 1.9s on mid-tier phones
Conversion rate
18%
first 6 weeks post-launch
Bounce rate
22%
primarily on mobile category pages
Dev tickets
60%
copy & merch changes now self-serve
06 /

The stack

// what powers it

Shopware 6 as the commerce core, a custom Twig theme for the transactional flows, a Next.js head for marketing surfaces, and a typed component library that compiles to both.

Shopware 6Next.js 15TypeScriptTwigTailwind CSSPlugin SDKStorefront APIVercelFigmaGitHub Actions
07 /

What I'd do differently

// honest section

Two things, in order. One — I'd ship the dashboard first, even before the storefront rebuild. The merchandising team was the bottleneck for everything else; unblocking them sooner would have compounded.

Two — I'd be more aggressive about deleting legacy regional overrides on day one. We kept a few “in case”, and every one of them came back to haunt us during launch. Old code is rarely as innocent as it looks.

// thanks for reading

Got a project that needs this kind of care?

I'm currently available for full-time and contract work. If you're rebuilding a storefront, shipping a dashboard, or just want a second pair of eyes on a frontend, let's talk.

itsnur.dev@gmail.comBack to portfolio