SyncFlow
SaaS-платформа для синхронизации товаров между маркетплейсами. Multi-tenancy, визуальный конфигуратор workflow, интеграции с Ozon и Wildberries.
Продавцы на маркетплейсах тратят часы на ручное обновление остатков, цен и карточек товаров на каждой площадке отдельно. Маппинг полей, трансформация данных, обработка ошибок — для каждого маркетплейса всё своё. SyncFlow — SaaS-продукт, где продавец сам настраивает маршруты синхронизации через визуальный редактор, без программирования.
Текущее состояние
На данный момент реализовано:
- Визуальный конфигуратор workflow — node-based редактор, где пользователь строит цепочку: источник данных, трансформации, целевая площадка. Написан на Next.js с кастомным движком на Canvas.
- CRM — управление клиентами и контактами.
- Управление заказами — обработка заказов с маркетплейсов в едином интерфейсе.
- PIM — Product Information Management, единое хранилище карточек товаров.
- Auth-сервис — регистрация, JWT, multi-tenancy на уровне базы данных.
- API Gateway — маршрутизация запросов между фронтом и сервисами.
Архитектурные решения
Весь код живёт в одном монорепозитории — pnpm workspaces + Turborepo для оркестрации билдов. Фронтенд и бэкенд разделены, но деплоятся вместе: Next.js отвечает за интерфейс (визуальный редактор, дашборды, PIM), FastAPI — за бизнес-логику, коннекторы и выполнение workflow. Каждый сервис собирается в свой Docker-образ, CI на GitHub Actions пушит их в GHCR. Локально всё поднимается одним docker compose up — база, Redis, gateway, auth, фронт.
Multi-tenancy реализован через Row-Level Security в PostgreSQL — каждый тенант видит только свои данные без отдельных баз.
Roadmap
Коннекторы маркетплейсов
Ozon, Wildberries, Яндекс.Маркет — первые три площадки. Каждый коннектор умеет читать и писать: забирать заказы и остатки с площадки, отправлять обновлённые карточки и цены обратно. Коннектор — это плагин: стандартный интерфейс, под капотом — специфика конкретного API. Добавление нового маркетплейса не должно требовать изменений в ядре.
Движок выполнения workflow
Сердце системы. Берёт цепочку, собранную в визуальном редакторе, и выполняет её: запрос данных из источника, трансформация по заданным правилам, отправка в приёмник. Запуск по расписанию (cron) или по событию (вебхук от маркетплейса). Каждый шаг логируется — если что-то сломалось, видно где именно и на каких данных.
Marketplace-агностичный маппинг
Единая карточка товара внутри SyncFlow. Продавец заполняет её один раз, а система автоматически адаптирует под требования каждой площадки: названия полей, обязательные характеристики, форматы фото, ограничения по длине текста. Ozon хочет offer_id и rich-content в JSON. Wildberries — nmID и 11 обязательных характеристик для шин. Маппинг берёт это на себя.
Аналитика синхронизаций
Дашборд, на котором видно всё: история запусков, сколько товаров обновлено, сколько отклонено модерацией, какие ошибки и как часто. Графики по времени — чтобы отслеживать тренды, а не разбирать логи вручную.