Ezeden: An Online Store for 3,500 Products Built on Its Own Master Catalog
Selling thousands of products from many suppliers means messy data: different units, duplicates, missing translations, prices in three currencies. Ezeden is a fast three-language store on top of a master catalog that turns that data into one clean, controlled source.
The Challenge
Ezeden sells European brands for kitchens and furniture across Ukraine: kitchen appliances, sinks and mixer taps, professional equipment, furniture hardware, handles and mechanisms. The range covers 22 brands - among them Smeg, Gessi, Teka, Foster and Salice - and comes from several suppliers, each with its own file formats, units and naming.
The task was two projects in one: a store that customers enjoy using, and the system behind it that keeps thousands of products correct - prices, stock, specifications and translations - without a team of people copying data by hand.
The Store
The storefront is built for browsing a large technical range.
The catalog is faceted: categories filter by brand, price, availability and product attributes, with counts per brand, and the kitchen-mixers category alone holds more than 650 products. Each colour of a product has its own page, linked to its siblings by swatches - the Smeg KLF05 kettle, for example, comes in seven colours.
Product pages are rich: grouped specifications, documents shown as gallery slides, dimensions, bundles, accessories and analogues, reviews and questions. For buying there are cart and checkout, quick order, wishlist, comparison of up to four products, recently viewed, and alerts for price drops and back-in-stock. B2B customers get company accounts with quotes and payment by invoice for companies and sole traders.
Delivery goes with Nova Poshta to a branch, a parcel locker or by courier, plus pickup and a courier in Kyiv. The store runs in three languages and three currencies: Ukrainian, Russian and English; hryvnia, dollar and euro.
The store is a Laravel application with Inertia and React, rendered on the server: the visitor and the search engine get finished HTML, and the page then works as a fast single-page app.
Built for Search
The catalog is large, so it was designed for search engines from the start. Sitemaps list about 3,560 pages per language - products, categories, brands and content - with their alternates in all three languages, and every page carries hreflang links.
Product pages are marked up with schema.org ProductGroup and Product, Offer, Brand, breadcrumbs, the return policy, and each specification as a PropertyValue. The home page describes the organisation and the site search. An llms.txt file gives AI assistants a map of the store.
The Hub Behind It
The store has no database of its own. Everything it shows comes from the hub - a master catalog that is the single source of truth.
The hub imports from every source: supplier price files, an existing OpenCart catalogue, and readers for manufacturers’ own sites such as Smeg and Teka. When a brand stops listing a model, the store stops selling it. The data is kept clean: units are normalised, duplicates detected, and compatibility rules keep accessories attached to the right products.
Every field stays under control: it can follow its source, be edited locally or be locked, with a full change history and rollback. A rules engine calculates prices and a stock ledger records every movement; exchange rates come from the National Bank of Ukraine.
AI only suggests here: it drafts missing translations, guided by a glossary, and they wait in a queue until a manager approves them. AI is never allowed to change a price or a stock level.
The hub publishes the catalogue to Google Merchant Center and has connectors for the Rozetka, Prom.ua and Epicentr marketplaces, KeyCRM, Nova Poshta and Telegram.
Behind both applications there are over 300 automated test files.
Tech Stack
- Storefront: Laravel 13 + Inertia + React 19, server-side rendering
- Hub: Laravel 13 + Inertia + React 19 + Ant Design
- Data: MySQL 8.4, Redis 7
- Background work: Laravel Horizon (queues), Reverb (websockets)
- Infrastructure: Docker Compose on Hetzner, Caddy with automatic TLS
- CI/CD: GitLab pipeline with deployment over SSHResult
A store with about 3,500 products in three languages that behaves like a fast modern app and is fully readable for search engines. Behind it, one master catalog keeps every price, stock level, specification and translation under control - so adding a supplier or a brand is an import, not a manual project.




