Концепция продукта
Полная картина того, что мы строим, для кого и почему это будет успешно.
SaaS-платформа-конструктор, которая позволяет предпринимателям за 15 минут создать свою торговую площадку с маркетплейс-функционалом — без технических навыков, с модульной архитектурой и выбором дизайна среди лучших мировых площадок.
Что уже работает: Next.js App Router, каталог с 11 категориями (пейзаж, портрет, абстракция и др.), фильтры, поиск, 3 темы (light/dark/sepia), корзина, избранное, сообщения, мобильная навигация, SEO (Schema.org, OG), Yandex Metrika, AI-чат виджет.
Архитектурный вывод: Проект реализован качественно, но функционал «разбился на 2 домена» из-за отсутствия чёткого разделения «витрина vs управление». Eco-тема з hardcoded в компоненты. Нет модульности — нельзя «выключить» функционал без изменения кода.
Что бы дала наша платформа: Вынести eco-тему в отдельный модуль-тему. Разделить storefront и dashboard. Добавить модульность (отзывы, сообщения, аналитика — как подключаемые модули). rodnoyart.ru — один из tenants.
Принятые и открытые решения
Полный список архитектурных и бизнес-решений. Зелёные — решено, жёлтые — частично, оранжевые — нужно обсудить.
70% решений принято
Что строим?
SaaS-платформу-конструктор торговых площадок. Аналог HivePress, но современный, на Next.js, с модульной архитектурой. Клиент получает свою торговую площадку за 15 минут.
Для кого?
Предприниматели, уходящие с Wildberries/Ozon. Российский рынок (старт), затем глобальный.
rodnoyart.ru в контексте?
Это потенциальный клиент платформы. Пример того, кто может прийти и получить готовую площадку 'под ключ'.
Бизнес-модель?
Freemium SaaS: бесплатный тариф (0 руб.) для привлечения + платные подписки (1 990 / 4 990 руб./мес) + транзакционная комиссия (1-4%).
Технологический стек
Next.js 15 (App Router) + tRPC + Drizzle ORM + PostgreSQL + Redis + Tailwind CSS + shadcn/ui. Один monorepo, monolith с модульными границами.
Мультитенантность (старт)
Shared Database, Shared Schema. Все данные в одной БД, изоляция через tenant_id. Каждый SQL-запрос автоматически фильтруется.
Мультитенантность (масштаб)
При 100+ tenants мигрировать крупных клиентов на Separate Databases. Эволюция, как у Shopify/GitLab.
Монолит или микросервисы?
Монолит с модульными границами на старте. Архитектура позволяет извлечь модуль в отдельный сервис позже.
Тип ORM
Drizzle ORM (не Prisma). Легче, типобезопасный, лучше работает с edge runtime, SQL-like синтаксис.
API подход
tRPC для end-to-end типизации между frontend и backend. REST для публичных API storefront.
Механизм тем
CSS-переменные через ThemeProvider. Каждая тема = набор токенов (цвета, шрифты, отступы) + React-компоненты шаблонов страниц.
Кастомизация тем
Уровень 1 (MVP): цвета, лого, шрифт, название. Уровень 2 (v2): layout-варианты. Уровень 3 (v3): page builder.
Какие темы для MVP?
Нужно определить 3 темы для первой версии. Предложение: Universal (Авито-стиль), Minimal (Циан-стиль), Eco (rodnoyart-стиль).
Хранение атрибутов товаров
Гибрид: JSONB для данных + отдельная таблица category_attributes для схемы атрибутов каждой категории. GIN-индекс для JSONB.
Дерево категорий
Предлагается Materialized Path (path = '1/5/12'). Быстрее для чтения, проще чем Nested Sets, гибче чем Adjacency List.
Версионность данных?
Нужна ли история изменений цен, отзывов, товаров? Влияет на сложность schema.
Тип товара: structured vs unstructured?
Оба. Structured (SKU, характеристики, вариации) для товаров. Unstructured (описание, фото, цена) для объявлений.
Платёжная система (сбор подписки)
ЮKassa для РФ. Stripe для глобального рынка (фаза 3).
Пробный период
Нужна ли привязка карты для триала? Что при окончании триала (заморозка/read-only/удаление)?
Модель доступа к модулям
Жёсткая привязка к тарифу или каждый модуль докупается отдельно?
Доменная стратегия
Клиент получает поддомен (shop.platform.ru) бесплатно. Собственный домен на платных тарифах. Wildcard SSL.
Общая или раздельная база покупателей?
Общий вопрос: один аккаунт покупателя для всех магазинов платформы, или отдельный для каждого магазина?
Аутентификация
NextAuth.js (Auth.js v5) + JWT с tenant_id в payload. Два типа: владелец площадки (dashboard) и покупатель (storefront).
Импорт из WB/Ozon — способ
Поддерживать оба: файл (CSV/Excel) + API (API-ключ от WB/Ozon).
Импорт — маппинг категорий
Гибридный: автоматический ИИ-маппинг + ручная коррекция пользователем перед подтверждением.
Импорт — изображения
Скачивать и хранить на S3. Не зависеть от внешних URL WB/Ozon.
Импорт — двусторонняя синхронизация?
Односторонний импорт для MVP. Синхронизация — фаза 2.
Название платформы
Нужно выбрать бренд для продукта. Варианты для вдохновения: MarketKit, ShopForge, OwnMarket, Platza.
Архитектура системы
Технологический стек, мультитенантная архитектура, взаимодействие слоёв.
Next.js 15
App Router + RSC
tRPC
End-to-end типизация
Drizzle ORM
Типобезопасный запросы
PostgreSQL
JSONB, FTS, GIN
Redis
Кэш, сессии, очереди
BullMQ
Фоновые задачи
Tailwind CSS 4
Utility-first
shadcn/ui
Компонентная библиотека
Auth.js v5
JWT + OAuth
per-tenant
cache + queue
images, files
Все данные клиентов хранятся в одной PostgreSQL. Каждая таблица содержит tenant_id. Все запросы автоматически фильтруются через Drizzle middleware — разработчик не может получить данные чужого тенанта.
Преимущества (старт)
- Один сервер БД — дешевле
- Проще обслуживать и мигрировать
- Быстрее развивать
Эволюция (масштаб)
- 100+ tenants — Separate Schemas
- Enterprise — Separate Databases
- Как Shopify, GitLab
Модульная система
Каждый модуль — самостоятельная единица с собственными моделями, API, компонентами и миграциями. Ключевое отличие от HivePress.
Core Engine
MVPАутентификация, мультитенантность, кэш, очереди, шина событий
Storefront
MVPГлавная, каталог, карточка товара, корзина, оформление
Зависит от: Core Engine
Listings
MVPCRUD товаров, статусы, характеристики, медиа
Зависит от: Core Engine
Categories
MVPИерархия категорий, фильтры, фасетный поиск
Зависит от: Listings
Search
MVPFull-text поиск (PostgreSQL FTS / Meilisearch), сортировка
Зависит от: Listings, Categories
Theme Engine
MVPПровайдер тем, CSS-токены, кастомизация, 3+ пресета
Зависит от: Core Engine
Payments
MVPЮKassa, корзина, заказы, комиссии платформы, вебхуки
Зависит от: Listings, Storefront
Reviews
Отзывы с рейтингом, модерация, агрегация
Зависит от: Listings, Users
Messages
Чат покупатель-продавец, real-time, вложения
Зависит от: Core Engine
Notifications
Email, Push, In-app уведомления, шаблоны
Зависит от: Core Engine
Import/Export
Импорт из WB/Ozon (CSV + API), маппинг, изображения
Зависит от: Listings, Categories
Analytics
Воронка продаж, топ товаров, конверсия, графики
Зависит от: Listings, Payments
Delivery
СДЭК, Почта России, расчет стоимости, трекинг
Зависит от: Payments
AI Assistant
Генерация описаний, SEO-оптимизация, рекомендации
Зависит от: Listings
SEO Tools
Метатеги, sitemap, robots.txt, Open Graph
Зависит от: Storefront
Движок тем (Theme Engine)
Клиент выбирает дизайн своей площадки. Каждая тема — набор CSS-токенов + React-шаблонов + настройки кастомизации.
Universal
Чистый каталог в стиле Авито. Сайдбар с фильтрами, grid карточек, hero-баннер.
Minimal
Лаконичный стиль Циан. Много воздуха, акцент на фото, минималистичные карточки.
Eco
Тёплая атмосфера в стиле rodnoyart. Частицы, glassmorphism, мягкие анимации.
Boutique
Бутиковый стиль Etsy. Уютный, ручная работа, тёплые тона, акцент на детали.
Marketplace
Маркетплейс в стиле Amazon. Плотная раскладка, рейтинги, акции, рекомендации.
Custom
Индивидуальный дизайн. Полная свобода: HTML/CSS, собственные шаблоны.
База данных
Схема PostgreSQL, стратегии хранения данных, мультитенантная изоляция.
Атрибуты товаров
Решение: Hybrid-подход. JSONB-колонка для хранения значений + таблица category_attributes для определения схемы каждой категории. GIN-индекс для быстрого поиска по JSONB.
Дерево категорий
Предложение: Materialized Path (path = "1/5/12"). Быстрее для чтения, проще Nested Sets, гибче Adjacency List. Поддержка через LTREE (PostgreSQL extension).
Экономика продукта
Бизнес-модель, тарифные планы, расчёт выгоды для клиента и доходов для платформы.
Селлер на WB/Ozon
Тот же селлер на нашей платформе
Экономия: 183 010 ₽/мес | 2 196 120 ₽/год
- 1 площадка на поддомене
- До 50 товаров
- 1 базовая тема
- Каталог + поиск + фильтры
- Отзывы покупателей
- Базовая аналитика
- Комиссия 4% за транзакцию
- До 1 000 товаров
- Все темы (6+)
- Собственный домен + SSL
- Кастомизация (цвета, лого, шрифт)
- Чат с покупателями
- Импорт из WB/Ozon
- Комиссия 3%
- Безлимит товаров
- Индивидуальный дизайн
- Продвинутая аналитика
- Email + Push-уведомления
- SEO-инструменты
- Интеграция СДЭК, Почта России
- ИИ-помощник
- Комиссия 2%
- White-label (без бренда платформы)
- API-доступ
- Выделенный контур
- SLA 99.9%
- Персональный менеджер
- Кастомные модули
- Комиссия 1%
Через 6 месяцев (~100 клиентов)
Через 12 месяцев (~500 клиентов)
Маркетинг-план
Каналы привлечения, позиционирование, активности по фазам.
Landing page
Сбор email-листа интересующихся
Контент
Статьи: «Как я ушёл с WB и увеличил маржу на 40%»
Telegram-канал
Комьюнити селлеров, советы, анонсы
Партнёрства
Коллаборации с консультантами по WB/Ozon
Контекст
«Создать свой маркетплейс» / «Альтернатива WB»
YouTube
Обзоры платформы от реальных селлеров
Referral
«Приведи друга — месяц бесплатно»
Free migration
«Перенесём каталог с WB/Ozon бесплатно»
SEO
50+ статей, гайдов, FAQ по ключевым запросам
Партнёры
Взаимный трафик, совместные кампании
Вебинары
«Как создать свой магазин: от идеи до продаж»
Агенты
Студии создают магазины клиентам на платформе
Telegram (селлерам WB/Ozon)
Платишь WB 150к в месяц комиссий? За 4 990 ₽ получи СВОЮ площадку. СВОИ клиенты. СВОЙ бренд.
VC.ru (предпринимателям)
Почему маркетплейсы — ловушка, и как СВОЙ сайт увеличивает маржу на 40%.
Контекстная реклама
Создайте свой маркетплейс за 15 минут. Без программирования. От 0 ₽/мес.
Для Enterprise (rodnoyart и подобные)
Ваша площадка на профессиональной инфраструктуре. Модульность. Масштабируемость. Полный контроль.
Roadmap: MVP за 10 недель
Детальный план реализации по неделям. Критический путь заблокирован до выполнения предыдущего этапа.
- Проектирование БД (PostgreSQL schema)
- Инициализация проекта (Next.js 15, Drizzle, Redis, tRPC)
- Core middleware: TenantResolver, AuthMiddleware, RateLimiting
- Базовый ThemeProvider с CSS-переменными
- Регистрация клиента платформы
- 4-шаговый onboarding wizard (название → тема → модули → первый товар)
- Dashboard: обзор, управление товарами, настройки
- Tenant middleware (маршрутизация по домену)
- Витрина: каталог (grid + фильтры + сортировка)
- Страница товара: галерея, характеристики, CTA
- Модуль категорий: CRUD, иерархия, фильтрация
- Поиск (PostgreSQL FTS), загрузка изображений на S3
- Система тем: ThemeProvider, TokenResolver, ThemeCompiler
- 3 пресета: Universal, Minimal, Eco
- Кастомизация: цвета, логотип, шрифт
- Responsive storefront + mobile bottom nav
- ЮKassa интеграция, корзина, оформление заказа
- Комиссия платформы, вебхуки статусов
- Landing page: hero, features, pricing, CTA
- SEO, метрики, performance optimization
Открытые вопросы
Решения, которые необходимо принять перед началом реализации. Сгруппированы по приоритету.
Блокирующие вопросы (нужны до старта)
Модель доступа к модулям
Жёсткая привязка к тарифу или каждый модуль докупается отдельно?
Общая или раздельная база покупателей?
Общий вопрос: один аккаунт покупателя для всех магазинов платформы, или отдельный для каждого магазина?
Название платформы
Нужно выбрать бренд для продукта. Варианты для вдохновения: MarketKit, ShopForge, OwnMarket, Platza.
Название платформы
Варианты: MarketKit, ShopForge, OwnMarket, Platza или другое.
Вопросы средней приоритетности
Бизнес-модель?
ЧастичноFreemium SaaS: бесплатный тариф (0 руб.) для привлечения + платные подписки (1 990 / 4 990 руб./мес) + транзакционная комиссия (1-4%).
Мультитенантность (масштаб)
ЧастичноПри 100+ tenants мигрировать крупных клиентов на Separate Databases. Эволюция, как у Shopify/GitLab.
Кастомизация тем
ЧастичноУровень 1 (MVP): цвета, лого, шрифт, название. Уровень 2 (v2): layout-варианты. Уровень 3 (v3): page builder.
Какие темы для MVP?
Нужно решитьНужно определить 3 темы для первой версии. Предложение: Universal (Авито-стиль), Minimal (Циан-стиль), Eco (rodnoyart-стиль).
Дерево категорий
ЧастичноПредлагается Materialized Path (path = '1/5/12'). Быстрее для чтения, проще чем Nested Sets, гибче чем Adjacency List.
Версионность данных?
Нужно решитьНужна ли история изменений цен, отзывов, товаров? Влияет на сложность schema.
Тип товара: structured vs unstructured?
ЧастичноОба. Structured (SKU, характеристики, вариации) для товаров. Unstructured (описание, фото, цена) для объявлений.
Пробный период
Нужно решитьНужна ли привязка карты для триала? Что при окончании триала (заморозка/read-only/удаление)?
История обсуждения
Полная хронология рассуждений и принятых решений от первого вопроса до деплоя на сервер.
Запрос: «ты знаешь, что такое — hivepress?»
Я объяснил: HivePress — это WordPress-плагин для создания классифайдов/маркетплейсов. Модульная архитектура через расширения, поддерживает listings, vendors, reviews, messages, payments. Но ограничен экосистемой WordPress (PHP, нет real-time, монолитная архитектура WP). 100K+ активных установок.
Запрос: «давай пока не делать, а рассуждать как лучшие в мире специалисты... хочу с тобой сделать что-то похожее на HivePress, но более современное...»
Ключевые рассуждения: Обсудили 3 подхода: (1) Эволюция WordPress с кастомными плагинами — отвергнут из-за ограничений PHP; (2) Headless CMS (Strapi + Next.js) — отвергнут из-за сложности; (3) Полный кастомный монолит — ВЫБРАН. Современный стек, полный контроль, модульность с первого дня.
Акцент пользователя: «модульная архитектура (как HivePress расширения, но лучше)» и «тема движок (выбор из лучших торговых площадок мира)» и «подписка на каждый модуль».
Запрос: «используй современные надежные архитектуры»
Решение: Next.js 15 (App Router + RSC) + tRPC + Drizzle ORM + PostgreSQL + Redis + Tailwind CSS 4 + shadcn/ui + BullMQ. Монолит с модульными границами. Один monorepo.
Обоснование: Drizzle вместо Prisma — легче, типобезопасный, лучше edge runtime, SQL-like синтаксис. tRPC вместо REST — end-to-end типизация. Монолит вместо микросервисов — скорость разработки.
Запрос: «в первую очередь мы расчитываем на тех, кто уходит с маркетплейсов вайлдберис и озон»
КРИТИЧЕСКИЙ ПОВОРОТ: продукт трансформировался из простого builder'а классифайдов в SaaS-платформу для создания маркетплейсов. Мультитенантная архитектура стала обязательной.
Обоснование: Продавцы платят 25-45% комиссий на WB/Ozon, получают штрафы, теряют контроль над клиентами и брендом. Они хотят свою площадку, но не могут нанять команду разработки.
Запрос: «сделай более полный и ясный вопрос по каждому пункту»
Я сформулировал детальные вопросы по 6 направлениям: Импорт (WB/Ozon), Theme Engine, Мультитенантность, Биллинг, База данных, MVP scope. Каждое направление получило 3-5 конкретных архитектурных вопросов с вариантами ответов.
Запрос: «если хочешь понять — давай поймем вместе... предположим, что это — https://rodnoyart.ru/ — заказчик»
Провёл полный технический анализ rodnoyart.ru: Next.js App Router, Tailwind, CSS-переменные для тем, eco-дизайн, Schema.org SEO, Яндекс Метрика.
Архитектурные выводы: Качественная реализация, но нет разделения storefront/dashboard, eco-тема заhardcoded в компоненты, нет модульности.
Поправка пользователя: rodnoyart.ru — это лишь ОДИН из потенциальных клиентов, а не единственный.
Запрос: «возможно ты потерял контекст, но мы создаем сервис вроде HivePress, но лучше... предложи варианты реализации, с чего начать и маркетинг план»
Предоставил: сравнение экономики (WB/Ozon vs наша платформа — продавец экономит ~184K RUB/мес), тарифные планы (Free/1990₽/4990₽/Enterprise), маркетинг-план (3 фазы: pre-launch/launch/growth), roadmap MVP на 10 недель (5 фаз).
Запрос: «сейчас хочу, чтобы ты осмыслив все вышесказанное создал тестовую страницу и там изложил полный анализ создаваемого проекта»
Создал комплексный Next.js дашборд с 10 разделами: концепция, решения, архитектура, модули, темы, БД, экономика, маркетинг, roadmap, открытые вопросы. Интерактивная навигация в сайдбаре с отслеживанием статуса.
Запрос: «сайдбар должен быть виден всегда — скролиться вместе с контентом и при нажатии перемещаться на нужный раздел»
Исправлено: Сделал сайдбар sticky на десктопе (position: sticky, top: 56px), добавил IntersectionObserver для авто-подсветки активного раздела при скролле, плавный scroll-to-section при клике, мобильный slide-in overlay с backdrop.
Запрос: «перенеси на multy.rodnoyart.ru» с учётными данными VPS
Деплой через paramiko (Python SSH-библиотека): установлены зависимости, собран Next.js, запущен через pm2 на порту 3010, настроен nginx reverse-proxy, получен SSL-сертификат через certbot.
Результат: https://multy.rodnoyart.ru — HTTPS, HTTP 200, Let's Encrypt SSL, управление процессами через pm2.
Итого: что дальше?
У нас есть 14 принятых решений, 7 частичных и 4 открытых вопроса. Архитектура спроектирована, стек выбран, модули определены, экономика просчитана, маркетинг-план готов.
Для перехода к реализации необходимо:
- Выбрать название платформы
- Определить 3 темы для MVP
- Утвердить схему БД (дерево категорий, тип товара)
- Решить модель доступа к модулям (жёсткая/гибкая)
- Определить политику триала (привязка карты? что при окончании?)
После этого — 10 недель до запуска MVP.
Лог проекта
Хронология всех действий: комментарии, AI-анализы, изменения решений. Персистентный журнал сессий.