spacetab

The Tea Workshop online shop

An online shop for Chinese tea and teaware: tea by the gram and by the cake in one product card, inventory, payment, delivery across Russia and a marketplace feed.

Client and task

The Tea Workshop sells Chinese tea and teaware in Moscow and across Russia. Tea is sold both by weight and by the piece: the same pu-erh is bought as a 25-gram sample or as a whole cake. The shop needed a store that handles this, keeps stock in line with the warehouse and runs every sale through the website, online and offline.

Home page with catalogue menu and promo banner
Home page with catalogue menu and promo banner
Pu-erh section with collections, subcategories and sorting
Pu-erh section with collections, subcategories and sorting
Product card with gram and cake packs, stock and points
Product card with gram and cake packs, stock and points

What we built

  • Grams and pieces in one product card

    One product offers “25 g”, “357 g cake”, “tong of 7 cakes”. Stock is kept in grams, and the number of available packs is calculated from it.

    Customers pick the pack they want, and the shop never sells more than it has.

  • Category tree with virtual sections

    Collections such as “Collectible pu-erh” and sections by factory sit on top of the main tree; product properties (type, year, weight) are set in the admin panel.

    A new section or property appears without changing the site.

  • Single accounting

    Orders and their statuses go to MoySklad, stock is reconciled with the accounting system. Offline sales also go through the website.

    Stock on the site matches the warehouse, with one ledger for online and offline.

  • Payment to the shop's account

    By card on the shop's bank payment page, in instalments with Yandex Split, or by invoice for companies. Fiscal receipts go through a cloud cash register. If the bank delays its payment notification, the site checks the status with the bank itself.

    Money arrives directly, and a paid order never stays “unpaid”.

  • Delivery across Russia

    CDEK with a pickup-point map, Yandex Delivery, Russian Post, courier in Moscow, in-store pickup. Free delivery above an order threshold applies automatically.

    Customers see delivery options and prices right away.

  • Points and customer account

    Loyalty points, order history, favourites, a “Waiting for restock” list.

    Customers have a reason to come back: points build up with every purchase.

  • Search that forgives typos

    “maofen” finds “Maofeng”, “da hong par” finds “Da Hong Pao”.

    Customers find the tea even if they don't know how the name is spelled.

  • Marketplace

    The catalogue is exported as a feed to Yandex Market.

    One catalogue serves both the website and the marketplace.

Mobile home with tea sections and prices
Mobile home with tea sections and prices
Mobile product card with pack sizes
Mobile product card with pack sizes

How it works

The shop is built on Sylius, an open-source e-commerce platform on PHP and Symfony. The storefront is a separate Vue app that gets the catalogue, cart and orders through the shop's API. Background jobs run through a queue. An outage of an external system (warehouse, cash register, email) doesn't break checkout: the order is saved, and the administrator gets an email about the failure. Search engine crawlers receive ready-made HTML pages. The shop's mini app in Telegram and MAX runs on the same API — that's a separate case study.

Timeline and scale

  1. August 2019 kick-off: shop and storefront from scratch.
  2. 2019–2020 main development: catalogue, inventory, payment, delivery, marketplace.
  3. 2021–2025 support.
  4. 2026 a new round: payment reconciliation with the bank, receipts via a cloud cash register, typo-tolerant search, loyalty points and customer account, a faster storefront, a mini app in Telegram and MAX.

Scale: over 5,000 commits across the shop and the storefront.

What it gave the shop

  • One ledger for online and offline

    Every sale goes through the website, stock matches the warehouse.

  • Tea specifics built into the shop

    Grams and cakes in one product card, no workarounds or manual recounts.

  • The shop grows without rewrites

    New payment and delivery methods plug into the same core, and the mini app was launched on the same API.

Technologies

  • PHP
  • Symfony
  • Sylius
  • Vue.js
  • MySQL
  • Beanstalkd
  • Docker
  • Yandex Cloud

Status

Live since 2019: teaworkshop.ru.

Vous avez un projet similaire ?

Parlez-nous-en : nous répondons dans un délai d’un jour ouvré et proposons par où commencer.

Telegram: @smgladkovskiy · E-mail: bip@spacetab.io