Case study

A bilingual Shopify storefront, built from scratch for an outdoor-living brand

141 products migrated, 209 SEO redirects mapped, a hand-written Liquid theme in Hebrew and English with true RTL, and an AI shopping advisor with a daily cost breaker. The client paused the launch, so the store never opened.

A bilingual Shopify storefront, built from scratch for an outdoor-living brand
Not a live shop. This build never launched, so nothing is for sale and no order was ever taken. Live demo password: terrazza

The situation

An Israeli outdoor-living brand wanted its catalogue on a Shopify store of its own, Hebrew first and English second, on a new domain, without losing the search traffic its existing product URLs had earned.

The constraint

Shopify themes are written left to right. Hebrew reads right to left. That is not a translation problem, it is a layout problem: every grid, every arrow, every slider and every menu had to be designed once and hold up in both directions, and the English storefront had to be a full second storefront, not a translated afterthought.

The brand did not want a template or a page builder, so the theme is a hand-written Online Store 2.0 Liquid theme. It sells in Israel, where accessibility under Israeli standard 5568 (WCAG 2.0 AA) is a legal requirement, not a nice-to-have. And the catalogue was changing domains, which is where search rankings usually go to die.

What I built

Everything below was delivered and can be browsed in the demo, behind a password, because the store never went live.

  • A hand-written Online Store 2.0 Liquid theme, fully bilingual Hebrew/English with true RTL: layouts, icons, sliders and search all mirror correctly.
  • The 141-product catalogue migrated into Shopify by script from one source file, not typed in by hand, so the import can be re-run instead of redone.
  • A redirect map of 209 old URLs to their new Shopify addresses, in Shopify's own import format, ready to apply on the day the domain switches.
  • 282 product images generated with AI and curated by hand: one studio packshot and one Mediterranean lifestyle scene per product, switchable site-wide from a single header toggle that follows the visitor across cards, product pages, the hero video and search.
  • An AI shopping advisor that answers sizing, material and composition questions against the live catalogue, in both languages, streaming. It sits behind a rate limit of 20 requests per 5 minutes per IP address (durable, on Upstash Redis), a daily cost circuit-breaker that switches it off past a fixed budget, and a WhatsApp fallback so nobody is left without an answer.
  • An IS 5568 accessibility audit across 7 pages, 2 viewports and both languages: 17 findings, 16 fixed. The seventeenth is the accessibility coordinator's contact details, which only the client can supply.
  • Structured data, predictive search, a performance budget, and a go-live plan of 16 ordered tasks.

The numbers

  • 141products migrated
  • 209SEO redirects mapped
  • 282images curated by hand
  • 16/17accessibility findings fixed
  • 2languages, one codebase
  • 20 / 5 minadvisor rate limit, per IP

Every number on this page comes from the project's own files: the catalogue export, the redirect map, the audit report and the advisor's configuration. There are no sales figures, because there were no sales.

What did not happen

The client paused the launch. The storefront never opened to the public, nothing in it was ever orderable, and the 209 redirects are mapped and import-ready but were never applied to a live domain. The build has been finished on my side since July 2026; going live is the client's call, and it has not been made.

I would rather say that plainly than let a case study hint at revenue that does not exist. What you can look at is the finished build, in the demo, behind a password that is printed under the screenshot on purpose.

What I would do differently: tie the inputs only the client can supply (the accessibility coordinator's details, the final content, the store transfer) to the first milestone instead of the launch checklist. A build can be complete on my side and still wait on details that only the other side holds.

Stack

  • Shopify
  • Liquid
  • Online Store 2.0
  • Shopify Admin API
  • JavaScript
  • Claude API
  • Node.js
  • Vercel
  • Upstash Redis
  • Flux / ComfyUI
  • Google Veo

See it

Want something like this?

Tell me what you are building, or what you are still doing by hand, and I will tell you how I would approach it. No commitment.