Перейти к содержимому
Кейс

Hyperice Moldova

Интернет-магазин оборудования для восстановления и велнеса, сделанный для молдавского рынка — три языка, местные цены и панель управления, с которой магазин справляется сам.

60Товаров в каталоге 3Языка витрины 72Опубликованные статьи 332Автоматических теста
Что мы построили

Магазин, которым владелец управляет сам, а не тот, из-за которого приходится звонить нам.

Витрина

Каталог, фильтры, мгновенный поиск, корзина и форма заказа.

Контент на трёх языках

Тексты на девяти страницах магазина редактируются из панели управления — на румынском, русском и английском, без программиста.

Панель управления

Тринадцать экранов, с правами, выданными по каждому действию отдельно: кто может смотреть, кто редактировать, кто удалять.

Заказы

Промокоды, подарочные карты, PDF-квитанция, которую магазин может скачать, и два автоматических письма на каждый заказ.

Как это работает

Три части, и только одна из них решает, какой будет цена.

  1. 1

    Витрина

    То, что видит покупатель. Сама она ничего не хранит: товары, цены и тексты приходят из части ниже.

  2. 2

    API

    Хранит каталог, тексты, заказы и права. Это единственное, что обращается к базе данных, и единственное, что решает цену.

  3. 3

    База данных и почта

    Где живут товары и заказы и откуда уходят два письма о заказе.

Корзина живёт в браузере покупателя, где её может изменить кто угодно. Поэтому сервер не верит ни одному слову о деньгах: когда приходит заказ, каждая цена читается заново из базы данных.

На чём построено

Обычные инструменты, но не устаревшие.

В браузере

То, что видит покупатель, рисуется у него на экране — на том из трёх языков, на котором он читает.

  • React 19
  • TypeScript
  • Tailwind CSS
  • i18next

На сервере

Одно место отвечает на каждый запрос, проверяет, что он осмыслен, и только оно решает цену.

  • Node 20
  • Express 5
  • Zod

Данные

Одна база данных хранит каталог, тексты, статьи и каждый заказ.

  • SQLite
  • Prisma

Проверка и выкладка

Ничего не попадает в работающий магазин, пока не пройдут тесты, а само обновление автоматическое.

  • Vitest
  • Docker
  • GitLab CI
  • nginx
Трудные места

Куда на самом деле ушла работа, и ничего из этого не видно на экране.

Цену решает сервер

Заказ передаёт только товар и количество. Название, цена и итог пересчитываются из базы данных — так что подделанный запрос ничего дёшево не купит.

Три языка, до самого низа

Не файл перевода, положенный сверху. Каждый текст в базе данных хранится сразу на всех трёх языках и отдаётся на том, который читает посетитель.

Права на каждое действие

Роли можно разрешить редактировать, не разрешая удалять. Одними воротами на входе этого не скажешь, поэтому свои есть у каждого маршрута.

Работа

Около 250 часов работы, от начала до конца.

26 днейОт первого коммита до запуска

Открыть hyperice.md →

Контакты

Есть идея для проекта? Запросите предложение!

Есть проект? Напишите нам, если хотите поработать вместе над чем-то интересным. Или вам нужна наша помощь? Не стесняйтесь обращаться к нам.