Fonyx — цифровая платформа для масштабирования сети магазинов техники
Построили полную e-commerce экосистему: от онлайн-витрины и мобильных приложений до внутренней системы сборки и доставки заказов — с архитектурой, готовой к запуску в 10+ городах без единой правки кода.
Fonyx — сеть магазинов премиальной электроники
О бизнесе
Fonyx (ранее Горбушка) — розничная сеть, специализирующаяся на продаже премиальной электроники: Apple, Samsung, Sony, Dyson, Marshall и другие топ-бренды. Базовый магазин расположен в Москве, стратегия — масштабирование на всю Россию через онлайн-первый подход.
11 категорий товаров: смартфоны, наушники, ПК и ноутбуки, планшеты, часы, бытовая техника, игровые приставки, гаджеты для спорта и здоровья, аудио и видео, уход и красота, аксессуары. Свыше 50 подкатегорий, 20+ партнёрских брендов.
Задача для Comrades Devs
Создать полноценную цифровую платформу, которая позволит Fonyx продавать в любом городе России с первого дня — без необходимости открывать физический магазин. Система должна поддерживать полный цикл: каталог, заказ, оплату, сборку, доставку, бонусную программу, trade-in и сервис.
Ключевое требование: архитектура с нуля спроектирована для мультигорода. Один магазин в Москве, но завтра — 10 магазинов в 10 городах. Без рефакторинга, без отдельных деплоев, без переписывания бизнес-логики.
Боли до проекта
Шесть этапов: от аудита до запуска
Аудит и проектирование
Погружение в бизнес, карта сервисов, архитектурные решения для мультигорода
UX/UI дизайн
Витрина, ЛК, админка, мобильные приложения — единый визуальный язык
Бэкенд и интеграции
Микросервисы, GraphQL/REST API, подключение 15+ внешних систем
Запуск и масштабирование
Продакшен, мониторинг, подготовка к мультигороду
Тестирование и QA
Нагрузочное тестирование, E2E, проверка всех бизнес-процессов
Фронтенд и мобильные
Nuxt 3 витрина, Vue 3 админка, два Flutter-приложения
Микросервисная архитектура для масштабирования без границ
Первое решение, определившее весь проект: отказ от монолита. Платформа Fonyx — это 7 бэкенд-сервисов, каждый отвечает за свою бизнес-область: каталог, заказы, доставка, личный кабинет, импорт из 1С, контент лендинга и админ-панель. Все сервисы общаются через единую точку входа (Nginx :8080) и работают с общей базой данных MySQL 8.
7 микросервисов
Каталог, заказы, доставка, ЛК, импорт, лендинг, админка — каждый сервис изолирован и масштабируется независимо
Единая маршрутизация
Nginx проксирует запросы по URL-паттернам: /graphql-purchase → заказы, /graphql-delivery → доставка, /* → каталог
Мультигород из коробки
Магазины, зоны доставки, слоты, сотрудники — всё привязано к shop_id. Новый город = новый магазин в админке
Синхронизация с 1С
Автоматический импорт каталога: 1С → S3 → парсинг XML → промежуточные таблицы → основной каталог
3 платёжных шлюза
Tinkoff, Сбербанк и ЮKassa подключены параллельно — гибкость в выборе для каждого региона
CDEK + зонирование
Полная интеграция с CDEK: ПВЗ, тарифы, трекинг. Плюс собственные зоны доставки с ray-casting алгоритмом
Технологический стек
✓ Результат этапа
Спроектирована микросервисная архитектура из 7 бэкендов + Bagisto-ядро, единый Nginx-маршрутизатор, Docker-оркестрация. Система готова к горизонтальному масштабированию: добавление нового магазина в новом городе — задача на 15 минут в админ-панели, а не на 3 месяца работы разработчиков.
B2C-платформа: каталог, корзина, оплата, бонусы
Витрина fonyx.store построена на Nuxt 3 с Tailwind CSS — быстрая, адаптивная, SEO-оптимизированная. Полный цикл покупки: от просмотра каталога до оплаты через Tinkoff. Бонусная программа мотивирует к повторным покупкам: +1000 бонусов за регистрацию, начисление бонусов за каждый заказ.
Каталог и поиск
11 верхнеуровневых категорий, 50+ подкатегорий. Полнотекстовый поиск через OpenSearch с автоподсказками. Фильтрация по атрибутам, сортировка по популярности. Lazy-load пагинация — «Ещё N товаров».
Карточка товара: галерея до 6 фото, варианты (цвет, память, SIM), rich-контент с разбивкой по разделам (дисплей, камера, процессор), табы с описанием, характеристиками, доставкой, оплатой и гарантией.
Корзина и checkout
Корзина привязана к одному магазину — при добавлении товара из другого магазина корзина автоматически очищается (бизнес-правило для корректной сборки). Полный checkout: адрес → способ доставки → способ оплаты → заказ. Оплата через Tinkoff с callback-подтверждением.
Подарочная упаковка как опция при оформлении. Промокоды с трекингом использования.
✓ Результат этапа
Запущена полнофункциональная витрина с каталогом, корзиной, онлайн-оплатой и бонусной программой. Покупатель проходит полный путь от поиска товара до получения заказа — без единого звонка и без посещения магазина.
Авторизация, профиль, бонусы, избранное
Личный кабинет — полноценный хаб клиента. Авторизация по телефону (SMS/звонок через SmsAero и Telefon IP) или через OAuth (Google, Apple, VK). Sanctum-токены для безопасных сессий.
Профиль и данные
ФИО, дата рождения, телефон, email, адреса доставки. Управление банковскими картами для рекуррентных платежей через ЮKassa. Настройки уведомлений: push о заказах, email-рассылки, SMS-рассылки — каждый канал включается отдельно.
Бонусы и избранное
Интеграция с программой лояльности Loya: баланс бонусов, история начислений и списаний. 1000 бонусов за регистрацию. Избранное с сохранением между сессиями для авторизованных пользователей. Раздел «Вы смотрели» с историей просмотров.
✓ Результат этапа
Клиент получает полноценный кабинет с историей заказов, бонусным балансом, адресами доставки и настройками. Авторизация занимает 30 секунд — звонок с кодом на телефон.
Мобильное приложение для сотрудников: сборщики и курьеры
Ключевое отличие Fonyx от обычного интернет-магазина — встроенная операционная система для сборки и доставки заказов. Flutter-приложение для сотрудников покрывает весь цикл: от получения заказа на сборку до подтверждения передачи клиенту. Спроектировано для масштабирования: каждый сотрудник привязан к конкретному магазину и видит только свои заказы.
Сборщик — полный цикл сборки заказа
Верификация при входе
Логин + пароль → Selfie Check (фронтальная камера, овальная рамка). 3 неудачных попытки = блокировка. Передача аккаунта другому человеку исключена.
Список заказов на сегодня
Только текущий день, сортировка по слотам. Просроченные подсвечиваются красным, бейдж NEW для новых. Лимит — не более 3 заказов одновременно. Три вкладки: Собрать / Уточнить / Собрано.
Сканирование штрих-кодов
Камера → QR/штрих-код → проверка совпадения. Если не совпал — «Это другой товар». Если не читается — ввод артикула вручную. Каждый товар: подтвердить / отменить / уточнить / заменить.
Уточнение и замена
Если товара нет на полке — до 3 вариантов замены, звонок клиенту прямо из приложения. Клиент выбирает замену или отказывается. Фиксация причины отмены: нет в наличии / клиент отказался / испорчен.
Завершение сборки
Упаковка в пакеты, пересчёт суммы (с учётом замен и отмен), обновление статуса → ORDER_ASSEMBLED. Автоматическое уведомление клиента.
Курьер — доставка и выдача
Забор из магазина
Вкладка «Собрано» — заказы, готовые к забору. Карточка: номер, количество товаров, расстояние в км, временной слот. Кнопка «Взять на доставку» → «Еду на доставку».
В пути с картой
Карта с маршрутом, адрес доставки, кнопка «Позвонить» клиенту. Все точки на карте, приоритет маршрута курьер определяет самостоятельно.
Выдача и оплата
Адрес, подъезд, этаж, домофон. Если не оплачен — наличные или терминал. Частичный возврат на месте: выбор позиций → причина → подтверждение → автовозврат на карту (1-5 рабочих дней).
Статусы заказа — полный жизненный цикл
ORDER_CREATED → Заказ создан
Клиент оплатил, purchase_back уведомил delivery_back
ORDER_PREPARING → В сборке
Сборщик нажал «Начать сборку», создан Assembly + AssemblyItems
ORDER_ASSEMBLED → Собран
Все товары подтверждены/заменены, пакеты сформированы, сумма пересчитана
ORDER_IN_DELIVERY → В доставке
Курьер нажал «Еду на доставку», started_at = now
ORDER_FINISHED → Доставлен
Курьер подтвердил передачу, delivery.finished_at = now, клиент уведомлён
✓ Результат этапа
Полная автоматизация сборки и доставки: от получения заказа до передачи клиенту — без мессенджеров, без ручной координации. Каждый статус фиксируется, клиент получает уведомления. Система поддерживает параллельную работу нескольких магазинов в разных городах — сотрудники видят только свои заказы.
Trade-in, сервис, блог, CRM
Помимо основного e-commerce ядра, платформа включает ряд сервисов, которые выстраивают полный жизненный цикл клиента: от первого знакомства с брендом до обмена старого устройства на новое.
Trade-in
Полноценная страница /tradein с формой заявки: ФИО, телефон, загрузка до 8 фотографий устройства. Принимаются смартфоны, часы, планшеты, ноутбуки Apple. Оценка устройства — менеджером после получения заявки. Реализовано через пакет TradeIn в Bagisto.
Сервисный центр
Заявленный сервис: выездной ремонт, замена под гарантию до 45 дней, телефон на замену на время ремонта. FAQ с описанием процессов уже на сайте. Приложение для отслеживания статуса ремонта — в разработке. Срок ремонта: 1 день (до 5 дней в сложных случаях).
Блог
Активный раздел /blog: 6+ статей за 2025–2026 год. Обзоры новинок Apple, iOS, macOS. Управление через GraphQL-сервис gorbushka_landing_back. Контент поддерживает SEO и привлекает органический трафик.
CRM-система
Krayin CRM на отдельной базе данных: лиды, контакты, организации, активности, пайплайны. Полный цикл управления клиентской базой для отдела продаж и поддержки.
✓ Результат этапа
Fonyx — не просто интернет-магазин, а экосистема: покупка → бонусы → trade-in → покупка нового → сервис → снова бонусы. Каждый контакт с клиентом работает на удержание и повторную покупку.
Архитектура для 10+ городов с первого дня
Это не последний этап разработки, а первое проектное решение. Вся система с нуля строилась вокруг вопроса: «Как открыть магазин в новом городе за 1 день, а не за 3 месяца?». Ответ зашит в каждом компоненте платформы.
Как это работает
🏪 Мульти-магазин
Каждый магазин (shops) — отдельная сущность с адресом, координатами, расписанием, слотами доставки, зонами. Новый город = новая запись в таблице shops + настройка зон доставки (zone_coordinates — полигоны на карте). Каталог, клиенты, заказы — общие. Остатки и цены — привязаны к shop_id.
🗺 Зоны доставки
Для каждого магазина создаются полигональные зоны доставки: администратор рисует на карте, система сохраняет координаты. При заказе — ray-casting алгоритм (GeoPHP) определяет, в какую зону попадает адрес клиента и к какому магазину он привязан. UpdateDeliveryZonesJob автоматически обновляет привязки.
👤 Привязка сотрудников
Администратор указывает, к какому магазину относится каждый сборщик и курьер. Сотрудник видит только заказы своего магазина. Заказы из других городов недоступны. Если в сети 10 точек — 10 изолированных очередей заказов.
🚀 Онлайн-первый запуск
Традиционный ритейл: поиск помещения → ремонт → закупка оборудования → найм → открытие = 3-6 месяцев и миллионы рублей. С системой Fonyx: создать магазин в админке → настроить зоны → нанять 2-3 сборщика/курьера → запустить маркетинг = 1-2 недели. Физический магазин может появиться позже — когда в городе уже есть база клиентов и понятен спрос.
✓ Результат этапа
Система стирает главное ограничение офлайн-ритейла — привязку к физической точке. Fonyx может начать продавать в 10 городах уже в первый месяц: арендовать склад, нанять сборщиков и курьеров, запустить маркетинг. Физический магазин с ремонтом и витринами — когда подтверждён спрос, а не наоборот.
Что получил Fonyx
Автоматизация операций: от заказа до доставки — без ручной координации через мессенджеры и звонки. Каждый статус заказа фиксируется, каждый сотрудник видит свою задачу в приложении.
Городов можно подключить без единой строки кода. Новый магазин = 15 минут в админ-панели + настройка зон доставки. Система масштабируется горизонтально.
Месяцев сокращено на запуск в новом городе. Вместо поиска помещения, ремонта и закупки — арендовать склад, нанять людей, включить маркетинг. Продажи с первого дня.
Интеграций с внешними сервисами: 3 платёжных шлюза, CDEK, 1С ERP, Firebase, OneSignal, OAuth-провайдеры, Яндекс Карты, DaData, Sentry, Loya и другие.
Что получают покупатели
Полный online-шопинг
Каталог, поиск, фильтры, варианты товаров, корзина, оплата — полный цикл без посещения магазина
Бонусная программа
1000 бонусов за регистрацию, начисление за каждую покупку, интеграция с Loya
Мобильное приложение
Flutter-приложение: каталог, заказы, push-уведомления, отслеживание статуса
Trade-in
Обменять старое устройство Apple на скидку — заявка с фото прямо на сайте
Уведомления о заказе
Push через Firebase на каждом этапе: принят, собирается, в доставке, доставлен
Сервис и гарантия
1 год гарантии, выездной ремонт, телефон на замену, отслеживание статуса ремонта
✗ До проекта
- Только офлайн-продажи в одном магазине
- Каталог в 1С и Excel, без синхронизации
- Координация заказов через мессенджеры
- Открытие нового города — 3-6 месяцев
- Нет мобильных приложений
- Нет бонусной программы и trade-in
- Нет онлайн-оплаты
✓ После запуска
- Полноценный онлайн-магазин + мобильное приложение
- Автоматическая синхронизация каталога с 1С
- Система сборки и доставки с мобильным приложением для сотрудников
- Новый город — 15 минут в админ-панели
- 2 Flutter-приложения: для клиентов и сотрудников
- Бонусная программа, trade-in, сервис
- 3 платёжных шлюза: Tinkoff, Сбербанк, ЮKassa