Case study · September 2026

From a 14-plugin WordPress site to a storefront that loads in a second.

Same kitchen, same WooCommerce back end, same Borica payments. New front end: server-rendered Next.js in the Garden design, with a plan chooser, per-dish photos, full SEO coverage and every old link kept alive.

Headless Next.js over WooCommerce · Borica payments · Docker + Caddy

  • ×5.43.4 swas 18.5 sLargest paint, home, slow 4G
  • ×5056 mswas 2.6–3.3 sServer response
  • ×5.7577 KBwas 3.2 MBData per home page load
  • ×4.436was 158Requests per home page load

Before / after

Drag to compare the home page.

Desktop, 1440 px. Left: the live WordPress site with its clip-art hero. Right: the new site, with the food above the fold, the "cooking today" card and the little foodies.

Old Tasty Lab home page
New Tasty Lab home page
Old New

Page by page

Menu, plan and product pages.

Switch between desktop and phone. The phone frames scroll: they are full-page captures from the Lighthouse runs at 412 px.

Menu overview

Old: category cards are PNGs with the text baked in. New: real cards with age, meals and price, and a three-question chooser on top.

OldOld menu overview
NewNew menu overview

Plan page

Old: last week’s Thursday next to next week’s Monday in one flat list. New: week picker, five day cards with cycling dish photos, expired days hidden, order deadline shown.

OldOld plan page
NewNew plan page

Product page

Old: URL-encoded Cyrillic slug that changes weekly, one collage photo. New: stable numeric URL, dish list, ingredients and allergens, the order deadline, and a share card cropped to the main dish.

OldOld product page
NewNew product page

Design choices

Three additional designs, on top of the original.

The original Garden design stays the default. Because the rebuild keeps content and look apart, the same menus, prices, dish of the day and order flow can also wear a different design. These three are extra options the owner can choose instead – each built and running on staging, not a mock-up.

Glass: first screen
First screen at 1440 × 900.
Glass: the whole home page
The whole home page. Scroll inside the frame.
Idea
Clear, Apple-style glass panels floating over studio still lifes of the real menu. The page is white and light grey; the colour lives in the food and a few pastel props.
What stands out
  • Restyles the whole site, not only the home page: menus, plan, product, cart, FAQ and contacts all follow it.
  • Parallax with depth: while you scroll, the glass moves up and the photo moves down, so the dishes pass under the panels.
  • Every scene is one generated photograph of dishes from the actual menu, so light and shadows match.

Speed

Largest contentful paint, mobile, simulated slow 4G.

Lighthouse 13, 24 September 2026. The old site was measured live over the internet; the new site as its production build, so its server time is excluded (the staging server answers in 56 to 215 ms).

  • 388 → 149 KBHTML per home page. Elementor’s inline CSS and JSON are gone; on the wire it is 21 KB compressed.
  • 60 → 10Script tags. jQuery, Elementor, three addon packs and five marketing tags replaced by one framework bundle.
  • 42 → 1Stylesheets. Design tokens in one file, the font self-hosted, images as AVIF/WebP at the rendered size.

Experience

What a parent gets that they did not have.

  • Three-question chooser

    Age, then how many full solid-food meals a day, then texture, soup, vegetarian, salt or dessert. It picks one of the 13 plans. The meals-per-day rule comes from the founder’s own experience as a customer.

  • A week you can read

    Five day cards with coloured day bubbles, the weekly and monthly subscription beside them, expired days hidden, and the 13:00 order deadline on every card.

  • Dish photos, not collages

    Each dish is cropped from the kitchen’s collage. The box edges are measured per photo, so crops stay exact when the layout shifts.

  • One consistent illustration style

    32 sticker characters and 20 food photos, all generated from prompts kept in the repository, in one style: dark-green line, cream linen.

  • Every old link still works

    13 categories, 201 products, 13 blog posts and every legal page redirect or render on the new domain, Cyrillic slugs included.

  • Nothing changes in the kitchen

    Products, prices, orders and the blog are still edited in WooCommerce. The site re-renders within five minutes.

Search and sharing

What crawlers and social networks now read.

SignalOld siteNew site
Canonical URLHome onlyEvery page
Share imageOne 851×315 template for the whole siteGenerated 1200×630 card per page: plan photo, main dish, blog image
Structured data1 organisation block12 types: Organization, FoodEstablishment, WebSite, OfferCatalog, ItemList, Product, Blog, BlogPosting, FAQPage, AboutPage, ContactPage, breadcrumbs
Headings and alt textNo h1 on the home page; text baked into PNGsOne h1 per page, real text, alt text on plan, blog and hero images
Sitemap and feedsProduct sitemap churns weeklyStatic pages, plans with images, posts with lastmod, legal pages; RSS feed; web manifest and icons
Index hygieneExpired products indexableCart, checkout, 404 and expired products are noindex
Marketing tags5 fire before consentNone; consent-gated hook available
Lighthouse SEO / accessibility92–100 / 93–94100 / 96–97

Scorecard

Old versus new, every dimension.

DimensionOldNewVerdict
Speed on mobileLighthouse 56–61Lighthouse 87–91Solved
Server response2.6–3.3 s uncached PHP56–215 ms from cacheSolved
Page weight3.2–4.1 MB, 132–158 requests450–699 KB, 35–44 requestsSolved
Finding the right planFAQ paragraph, flat list of 286 productsChooser, plan pages grouped by weekSolved
Dish photographyOne collage per dayPer-dish crops, full-size gallerySolved
Brand and illustrationEmoji icons, Canva assetsGarden design, 32 stickers, original jar logoSolved
SEO and structured dataTitles onlyFull coverage, 12 schema typesSolved
Legacy URLs—Every old URL resolvesSolved
CheckoutWooCommerce form + expiry pluginOne-page checkout, Borica redirectOne live payment to verify
HostingShared LiteSpeedDocker + Caddy on a VPS, one-command deployDomain switch pending

How the numbers were taken

Lighthouse 13 with the mobile preset and simulated slow 4G on 24 September 2026. Old pages: the live site. New pages: the production build on a local server, so its server time is excluded; the staging server’s time to first byte was measured separately in Chrome (56 ms home, 215 ms plan page). Page sizes and tag counts are from the raw HTML. Screenshots: headless Chrome at 1440×900 and Lighthouse full-page captures at 412 px.

Say hello

Want the same for your website?

Send us your website address. We reply within one business day with a first look at its speed and SEO, and a fixed price for the rebuild – €3,000 to €5,000, with your new site ready in 3–5 days.

No obligation, no sales pressure. You talk to a project lead, not a sales team.