Техническое задание · инженерная версия

Техническое задание

Полный e-commerce: карта экранов, модель данных, API, состояния, этапы и критерии приёмки.
Версия 1.0 · 23.06.2026 · для разработки и оценки

Инженерная версия — для разработки и оценки. Версия 1.0 · 23.06.2026


0. Назначение документа

Документ описывает требования к разработке нового сайта и интернет-магазина бренда La Voie Nomade (далее — LVN). Это инженерная версия: содержит карту экранов, модель данных, API-контур, состояния компонентов, нефункциональные требования, разбивку на этапы и критерии приёмки. Параллельно существует упрощённая версия для заказчика.

Документ пересобран на основе: - текущего сайта lavoienomade.com (Joomla + JShopping), - макетов в Figma (L2sNCOacL3rQrWRS49BmFd), - двух черновиков ТЗ (этап 1 — витрина, этап 2 — админка/бэкенд).


1. О бренде и контексте

La Voie Nomade («Путь кочевника», фр.) — премиальный ювелирный бренд из Алматы. Философия — соединение культур и традиций Центральной Азии и Великого Шёлкового пути. Основатель — Александра Соко. Украшения позиционируются как часть идентичности и самовыражения владельца, сопровождающие его на личном пути.

Текущее состояние: сайт работает на Joomla + JShopping. Цель проекта — полностью заменить его на современный, быстрый, премиальный e-commerce на собственном стеке с управляемой админкой.

Ключевые свойства бизнеса, влияющие на архитектуру: - Мультиязычность: RU / KAZ / EN. - Мультивалютность: ₸ KZT (базовая) / ₽ RUB / € EUR / $ USD. - Категории украшений: Кольца, Серьги, Подвески, Шармы, Колье, Браслеты, Аксессуары. - Именованные коллекции (напр. Bereke, Tribute) и именованные изделия (Universe, Arrow, Moon, Irbis Eye и т.д.). - Варианты изделий: размер, цвет металла (золото), вставки/камни, материал. - Оплата: ePay Halyk (Visa/Mastercard) и наличные при доставке по Алматы. - Доставка: курьер по Алматы (2000 ₸), СДЭК по Казахстану (7–14 дней), экспресс СДЭК (3–5 дней), самовывоз из магазинов. - Изделия могут изготавливаться на заказ / по эскизу, есть сервис изменения размера — это контентно-сервисная составляющая бренда.


2. Цели проекта

  1. Премиальная визуальная подача уровня luxury-бренда (медленные, выверенные анимации, типографика, крупные изображения).
  2. Полноценный интернет-магазин: каталог → карточка → корзина → оформление → оплата → заказ.
  3. Самостоятельное управление контентом и товарами через админку (без разработчика).
  4. Высокая скорость и SEO (SSR/ISR, оптимизация изображений, разметка schema.org).
  5. Мультиязычность и мультивалютность из коробки.
  6. Адаптив под все ключевые брейкпоинты.

3. Технологический стек (рекомендация)

Слой Рекомендация Альтернатива Комментарий
Frontend Next.js (App Router) + TypeScript Nuxt SSR/ISR для SEO и скорости
Стили Tailwind CSS SCSS-модули соответствует черновику ТЗ
i18n next-intl / next-i18next RU/KAZ/EN, URL-локали /ru /kk /en
Backend / Commerce Medusa.js (headless commerce) NestJS + Prisma (кастом) Medusa даёт корзину/заказы/варианты/регионы «из коробки»
База данных PostgreSQL
ORM Prisma / MikroORM если кастомный бэкенд
Медиа S3-совместимое хранилище + Next/Image локально + sharp оптимизация, WebP/AVIF
Поиск PostgreSQL FTS (старт) Meilisearch / Algolia полнотекстовый поиск по товарам
Платежи Одна платёжная система (напр. ePay Halyk) Kaspi Pay и др. — опц. hosted-страница → PCI вне нашего контура
Доставка СДЭК API (расчёт/трекинг) ручной расчёт для регионов КЗ
Уведомления Email (SMTP/Resend) + WhatsApp/Telegram (опц.) подтверждения заказов
Аналитика Yandex.Metrika + GA4 + Meta Pixel трекинг e-commerce событий
Хостинг VPS / Vercel / собственный сервер с Node Next SSR требует Node-рантайма

Решение по бэкенду фиксируется на старте этапа 2. Рекомендация — Medusa.js, т.к. она нативно закрывает варианты товара, корзину, заказы, регионы (валюты), скидки и админ-API, существенно сокращая объём кастомной разработки. Если выбран кастом — закладывается +2–3 недели.


4. Дизайн-система (из Figma)

4.1 Цвета

Токен HEX Назначение
espresso #1b0904 основной тёмный, текст, тёмные секции
maroon-deep #310200 / #390200 фон футера и тёмных блоков
burgundy #6c0400 акцент, рукописный шрифт, кнопки, hover
ivory #f5f5f4 основной светлый фон
warm-grey #ebebe7 карточки, светлые секции
border-grey #d9d9d9 бордеры, плейсхолдеры
mocha #6f4e4d вторичный текст / приглушённые элементы

4.2 Типографика

4.3 Сетка и брейкпоинты

Контентная ширина и адаптив: 1920 / 1290 / 1024 / 768 / 480 / 375 / 320 px. Базовый дизайн отрисован под 1920, рабочая контентная ширина ~1290.

4.4 Состояния и интерактив

Допущение: часть фреймов в Figma помечена как незавершённые («ТЗ ???») — Корзина, Избранное, Карточка товара, 404 и мобильные версии ряда страниц. Перед версткой этих экранов требуется финализация макетов дизайнером. Несоответствия фиксируются как design-блокеры (см. раздел «Вопросы»).


5. Карта экранов (sitemap)

Все публичные URL — с языковым префиксом /{ru|kk|en}/....

5.1 Публичная часть

# Экран URL (пример) Тип Источник данных
1 Главная / landing hero, категории, подборки, основатель, философия, Instagram
2 Каталог «Украшения» /ukrasheniya listing товары + фильтры + сортировка
3 Категория /koltsa, /sergi, … listing товары категории
4 Карточка товара /koltsa/{slug} detail товар, варианты, галерея, похожие
5 Коллекции /kollektsii listing список коллекций
6 Страница коллекции /kollektsii/{slug} listing описание + товары коллекции
7 Аксессуары /aksessuary listing/content товары/контент
8 О нас /o-nas content бренд, основатель, философия
9 LVN Community /lvn-community content контент сообщества
10 Публикации /publikatsii listing пресса/статьи
11 Магазины /magaziny content список магазинов + карта
12 Ювелирный уход /yuvelirnyy-ukhod content статья
13 Сертификаты /sertifikaty content статья
14 Гарантии / возврат /garantiya-na-tovar-vozvrat content статья
15 Условия доставки /usloviya-dostavki content статья
16 Условия оплаты /usloviya-oplaty content статья
17 Публичная оферта /publichnaya-oferta content юр.
18 Политика конфиденциальности /politika-konfidentsialnosti content юр.
19 Обработка перс. данных /obrabotka-personalnykh-dannykh content юр.
20 FAQ /faq content вопрос-ответ
21 Контакты /kontakty content контакты
22 Поиск /search?q= listing результаты поиска
23 404 * system

5.2 E-commerce и аккаунт

# Экран URL Тип
24 Избранное (Wishlist) /wishlist list
25 Корзина /cart cart
26 Оформление заказа /checkout flow
27 Успешный заказ /checkout/success result
28 Вход /login auth
29 Регистрация /register auth
30 Восстановление пароля /reset-password auth
31 Личный кабинет — профиль /account account
32 ЛК — мои заказы /account/orders account
33 ЛК — заказ /account/orders/{id} account
34 ЛК — адреса /account/addresses account

5.3 Админка (этап 2)

/admin/...: Дашборд · Товары · Варианты · Категории · Коллекции · Заказы · Клиенты · Контент-страницы · Публикации · Магазины · Медиабиблиотека · Валюты/курсы · Промокоды (опц.) · Переводы (i18n) · Пользователи админки/роли · Настройки.


6. Детализация ключевых экранов

6.1 Главная

Hero с видео-фоном и слоганом «Что делает нас особенными?» + CTA «Перейти в каталог». Блок «Категории» (7 плиток). Горизонтальные подборки товаров (карточки с бейджами NEW / MUST HAVE, иконка wishlist, hover-смена фото). Блок «Основатель бренда» (фото + цитата Александры Соко). Блок «Наша философия». Блок «Мы в Instagram» + лента. Подвал: навигация, категории, инфо-ссылки, подписка на рассылку, соцсети, крупный логотип-надпись «LA VOIE* NOMADE».

6.2 Каталог / Категория

Заголовок-категория с переключателем подкатегорий (иконки), панель фильтров (категория, коллекция, цена, металл, камень, наличие — финальный набор уточнить) и сортировки (по популярности / новизне / цене ↑↓). Сетка карточек (переключение сетка/список). Карточка: фото, название, коллекция, цена (+ старая цена при скидке), бейдж, wishlist, «В корзину». Пагинация / бесконечная подгрузка. Внизу — блок ценностей (доставка, гарантия, сертификация, ювелирный уход).

6.3 Карточка товара

Галерея (несколько фото + hover/зум), название, коллекция, цена/старая цена, выбор варианта (размер, цвет металла, камень), счётчик количества, «В корзину» + wishlist. Аккордеоны: Характеристики (вес, проба, металл, вставки, размер, артикул), Доставка, Возврат/гарантия, Видеообзор. Блок «Другие изделия коллекции». Разметка schema.org/Product.

6.4 Коллекции / Страница коллекции

Список коллекций (крупные обложки + название). Страница коллекции: hero-описание (история коллекции) + грид товаров коллекции.

6.5 Избранное (Wishlist)

Заголовок «Ваш список желаний», счётчик товаров, сортировка, грид карточек с «В корзину» и удалением. Сохраняется для гостя (cookie/localStorage) и для авторизованного (в БД, синхронизация при входе).

6.6 Корзина

Список позиций (фото, название, коллекция, вариант, цена, qty, удалить), сводка заказа (сумма, доставка — предв., итого), промокод (опц.), CTA «Оформить заказ». Блок ценностей + «Другие изделия». Пустое состояние.

6.7 Оформление заказа (Checkout)

Шаги/единая форма: контакты (имя, телефон, email), способ доставки (Алматы-курьер / СДЭК / экспресс / самовывоз — с расчётом стоимости и адресом), способ оплаты (онлайн картой через одну подключённую платёжную систему), комментарий, согласие с офертой и обработкой ПД. Итоговая сводка. Переход на hosted-страницу платёжной системы → возврат на /checkout/success или страницу ошибки.

6.8 Личный кабинет

Профиль (данные, смена пароля), история заказов со статусами, детальная страница заказа, адресная книга, избранное.


7. Модель данных (основные сущности)

i18n-поля ({ru, kk, en}) помечены *. Базовая валюта цен — KZT; пересчёт в другие валюты по курсам (§7.10).

7.1 Productid, sku/артикул, slug, title*, description*, categoryId, collectionId, status (draft/active/archived), badges[] (NEW/MUST HAVE/…), basePrice, oldPrice?, images[] (порядок), attributes (вес, проба, металл, вставки), seo{title*, description*}, isMadeToOrder?, createdAt, updatedAt

7.2 ProductVariantid, productId, title (напр. «4 mm / Жёлтое золото»), options{size, metalColor, stone, material}, sku, priceDelta, stockQty, available

7.3 Categoryid, slug, title*, parentId?, image, sortOrder, seo

7.4 Collectionid, slug, title*, description* (история), cover, gallery[], productIds[], seo

7.5 MediaAssetid, url, alt*, width, height, type

7.6 Customer (User)id, name, phone, email, passwordHash, addresses[], wishlist[productId], createdAt

7.7 Addressid, customerId, city, street, building, apartment, comment, isDefault

7.8 Cartid, customerId? / sessionId, items[{variantId, qty, priceSnapshot}], currency, updatedAt

7.9 Orderid, number, customer{name, phone, email}, items[{variantId, titleSnapshot, qty, price}], subtotal, deliveryMethod, deliveryCost, deliveryAddress, paymentMethod (epay/cash), paymentStatus (pending/paid/failed/refunded), status (new/processing/shipped/completed/cancelled), comment, currency, total, createdAt

7.10 CurrencyRatecode (KZT/RUB/EUR/USD), rateToBase, updatedAt (обновление ручное в админке или авто по API ЦБ — уточнить)

7.11 Page (CMS)id, slug, title*, body* (rich), seo — инфо/юр. страницы

7.12 Publicationid, title*, cover, excerpt*, source, externalUrl?, body*, publishedAt

7.13 Storeid, name, address*, phone, workingHours, geo{lat, lng}

7.14 Promo (промокоды)id, code, type (percent/fixed), value, conditions, validFrom, validTo, usageLimit

7.15 AdminUser / Roleid, name, email, passwordHash, role (admin/manager), permissions[]


8. API-контур (основные группы)

REST (или GraphQL при Medusa-storefront). Все списки — с пагинацией, фильтрами, локалью и валютой.

Требования: валидация входных данных, rate limiting на auth/checkout, идемпотентность платёжных колбэков, JWT/сессии httpOnly, CORS.


9. Интеграции

Интеграция Назначение Заметки
Платёжная система (одна) онлайн-оплата картой hosted-форма, webhook о статусе, возвраты; PCI вне нашего контура; конкретная система согласуется (напр. ePay Halyk)
СДЭК API расчёт стоимости/сроков, трекинг по регионам КЗ
Email (SMTP/Resend) подтверждение заказа, статусы, сброс пароля шаблоны на 3 языках
WhatsApp / Telegram уведомления клиенту и менеджеру о заказе и смене статуса номер +7 777 22 000 66
Yandex.Metrika / GA4 / Meta Pixel аналитика + e-commerce события view_item, add_to_cart, begin_checkout, purchase
Instagram лента на главной через виджет/API или статичная подгрузка

10. Нефункциональные требования

Производительность: Lighthouse Performance ≥ 90 (mobile), LCP < 2.5 s, CLS < 0.1; изображения WebP/AVIF, next/image, lazy-load, CDN; ISR для каталога/карточек.

SEO: SSR/ISR, уникальные title/description на каждую страницу и язык, OpenGraph, sitemap.xml, robots.txt, ЧПУ-URL, хлебные крошки, разметка schema.org Product / BreadcrumbList / Organization, hreflang для RU/KK/EN, редиректы со старых Joomla-URL (карта 301).

Адаптив: корректная работа на 320/375/480/768/1024/1290/1920.

Доступность: контраст, alt у изображений, фокус-стейты, навигация с клавиатуры, семантика.

Безопасность: HTTPS, валидация и санитизация ввода, защита форм (анти-спам), rate limiting, хранение паролей (bcrypt/argon2), идемпотентные платёжные webhooks, секреты в env.

Правовое (РК): cookie-consent, страницы оферты / политики / обработки ПД, согласия в формах, хранение ПД согласно законодательству РК.

Мультиязычность/валюта: контент на RU/KK/EN, переключатели языка и валюты в шапке, пересчёт цен по курсам.

Логирование/мониторинг: ошибки (Sentry), логи заказов и платежей.


11. Этапы, результат и критерии приёмки

Проект разбит на 3 этапа (полный e-commerce, реалистичная последовательность).

Этап 1 — Публичная часть (витрина) на mock-данных

Состав: настройка проекта (Next.js + Tailwind + i18n), дизайн-система/токены, верстка всех публичных экранов §5.1, каталог с фильтрами/сортировкой (фронтовая логика на mock), карточка товара, коллекции, контент-страницы, корзина и избранное как фронтовые компоненты (локальное состояние, без бэкенда — т.к. присутствуют в дизайне), адаптив, оптимизация, базовое SEO, 404. Результат: полностью кликабельный сайт-витрина на тестовых данных. Критерии приёмки: все экраны §5.1 сверстаны и адаптивны (320–1920); Lighthouse ≥ 90; навигация и состояния работают; контент на 3 языках подключается; корзина/избранное работают локально.

Этап 2 — Backend, БД и админка

Состав: проектирование БД (§7), реализация API (§8), админка (товары, варианты, категории, коллекции, заказы, клиенты, контент-страницы, публикации, магазины, медиа, валюты, переводы, роли), импорт товаров из CSV, управление баннерами и подборками главной, авторизация и защита доступа, работа с изображениями (загрузка/хранение/оптимизация), управление мультиязычным контентом. Результат: рабочая админка + бэкенд + БД; можно наполнять каталог и контент. Критерии приёмки: CRUD по всем сущностям; загрузка изображений; создание заказа через API; роли админ/менеджер; данные отдаются на 3 языках и в нужной валюте.

Этап 3 — Интеграция, корзина/заказ/оплата, ЛК, запуск

Состав: подключение фронта к API, реальные корзина/избранное (с синхронизацией для авторизованных), checkout, интеграция одной платёжной системы (онлайн-оплата картой), расчёт доставки (СДЭК) + самовывоз, оформление и статусы заказов, промокоды, email- и WhatsApp/Telegram-уведомления, личный кабинет, аналитика (Метрика/GA4/Pixel + e-commerce события), 301-редиректы со старого сайта, финальное QA и деплой. Результат: боевой интернет-магазин. Критерии приёмки: сквозной сценарий «каталог → корзина → оформление → онлайн-оплата → заказ в админке → email клиенту» проходит на проде; самовывоз работает; ЛК показывает заказы; аналитика фиксирует purchase; миграция URL без потери SEO.