
Carveli: a furniture factory, a chain of showrooms in Odesa, Kyiv and Lviv, and an online store that had to sell all of it from one catalog. On the outside it is a tidy designer furniture storefront. On the inside it is the factory's product model, where one sofa exists in several fabrics and a bed comes with its own size chart and its own shipping time.
As in most of our projects, the visual part was far from the hardest challenge. The complexity sat deeper: in the accounting system, the production model, composite product attributes, service integrations and admin applications for the company's various roles and partners. Below we only cover what is publicly visible, based on store screenshots taken in November 2022.
The task
A factory with its own retail needs a store that does not mislead the buyer. If the EMMA model is made in several fabrics, the buyer should see every option and its price, not one "typical" card. If an item ships from stock in three days while a bed takes up to two weeks, the card should say so plainly. All of it in Ukrainian, with sales, a wishlist, a cart and the addresses of real showrooms where you can sit on the sofa before buying it.
What is inside

A catalog of composite products. The card title is assembled from the model, the item type and the fabric: "EMMA, 3-seat sofa bed, Woodrose". Color dots under the card show that the model has siblings in other upholstery. These are the composite attributes: a product as a combination of model, construction and material, not a flat line in a price list.

Filters that follow meaning, not database fields. In the tables category the buyer narrows the list by type, color, shipping time, style and tabletop material, with the rest tucked under "More filters". Interior photos sit between product cards so the grid does not turn into a warehouse on a white background.


The top menu mirrors how the factory thinks: Sale, sofas, chairs, tables, storage, beds, armchairs, accessories. Large sections get visual subcategories, as in accessories.

The product page. Breadcrumbs, a sale badge, the price with the old one crossed out, a finish switcher (gold and chrome for the Bistro desk), product attributes, shipping time and the buy button. Delivery, payment, warranty and specifications are folded into accordions so they do not fight the photo.

For large furniture the page becomes a product passport: a drawing with dimensions, height, width, depth and weight, leg, upholstery and filling materials, whether assembly is required, fabric composition and care instructions. Exactly the questions people would otherwise phone a manager about.


Checkout. The cart totals the order before delivery and accepts a discount or a gift certificate. The customer account opens via Facebook, Google or plain email. Every page footer lists showroom addresses and hours, and a separate page shows the showrooms themselves.

Technology
Publicly visible: multilingual URLs like /ua/uk/p/…, Facebook and Google OAuth sign-in, faceted filters with sorting, a wishlist, a cart with discounts and gift certificates. The source code of this store is not in our open repository, so we will not list frameworks from memory.
Why it matters
The buyer sees the same product logic as the factory: model, finish, fabric, dimensions, lead time. Managers get fewer clarifying calls, and the showrooms and the website sell from a single catalog. For us it is an example of a production model reaching the storefront without dropping a single attribute along the way.
Where to see it
The carveli.com address now redirects to maraline.ua by CARVELI, where the brand's store lives. The screenshots in this article were taken on carveli.com in 2022; we vouch for the current site only as far as what you see above.