Yii to Next.js: migrating a premium showroom (Kulttur case study)
How we rebuilt the Kulttur digital showroom from Yii to Next.js: brand-structured catalog, bilingual RO/EN with native hreflang, catalog structured data and green Core Web Vitals (LCP 1.9s, CLS 0) on real users.

In short: Kulttur, a premium door, window and flooring showroom in Bucharest, ran on Yii — a solid PHP framework, but one that no longer served its performance and AI-search needs. We didn't do a 1:1 migration; we rebuilt the digital showroom from scratch on Next.js. The result: LCP 1.9s and CLS 0 on real users, on par with the brands it sells.
The starting point
Kulttur sells premium products — Wippro, Internorm, niche flooring. The site needed to reflect that level: fast, clean, credible. The old Yii site worked, but it had slow loading, a rigid catalog structure and zero readiness for how people search today (mobile Google, AI Overviews).
The decision wasn't "Yii is bad". It was: for a showroom where speed and premium presentation directly affect sales, a rebuild on a modern stack delivered more than a patch on the old one.
Why a rebuild, not a 1:1 migration
A 1:1 migration would have copied the old structure onto new technology — including its limitations. We chose to rebuild the information from scratch:
- Brand-structured catalog (Wippro, Internorm, premium flooring) — how the real customer searches, not how it was organized in the old CMS.
- Bilingual RO/EN with native hreflang — for international clients, with correct canonical and alternates by construction.
- Contextual quote-request flow — on each product, not a generic form.
A rebuild costs more than a patch, but when the site is the storefront of a premium brand, half-measures show.
The stack we chose
Next.js (App Router) + React + TypeScript. The concrete reasons:
- Server Components for the catalog: pre-rendered HTML, fast, indexable.
- Image optimization — critical for a visual showroom (doors, windows, flooring are photo-intensive products).
- Catalog structured data directly in code, plus
llms.txtfor AI search. - Native hreflang via the metadata API, no fragile plugins.
The measured results
On real users (not just Lighthouse lab):
- LCP 1.9s — under the 2.5s "good" threshold.
- CLS 0 — zero layout shift, content doesn't jump.
- Indexable catalog, validated structured data, correct bilingual setup.
For a site with heavy product images, sub-2s LCP required exactly what I described in the image optimization checklist: responsive WebP, priority on the main image, explicit dimensions.
What mattered most
- The images. A showroom lives on visuals. Responsive WebP + lazy loading below the fold made the difference between a site that feels premium and one that loads slowly.
- The brand-structured catalog. Aligned with search intent, not with the old DB structure.
- Bilingual by construction. Correct hreflang from day one, not bolted onto a monolingual site later.
- AI-search readiness. structured data + llms.txt, so the showroom is citable in AI Overviews and ChatGPT, where more and more premium product research is moving.
Conclusion
Migrating off an old stack isn't about "a trendy new framework". It's about: does your site still serve your business, or hold it back? For Kulttur, a Next.js rebuild turned a slow showroom into one that feels on par with the products it sells.
If you have a site on an old stack (Yii, CakePHP, heavy WordPress) that has become a drag, this is the kind of project we do — see custom web apps. And if you first want to know exactly what's holding you back, an SEO/AI audit with code-level fixes shows you the priorities before any rebuild.