Задача — построить мультитенантную SaaS-платформу, на которой бизнес может запустить интернет-магазин или каталог без написания кода. Цель: каждый арендатор (tenant) через админ-панель сам описывает сущности — товары, услуги, портфолио работ, статьи, заказы, отзывы — а платформа автоматически создаёт под них таблицы в базе, REST API и интерфейс администрирования. Требовалась гибкая система шаблонов, изоляция данных арендаторов, авторизация конечных посетителей через соцсети, модерация пользовательского контента, уведомления владельцу магазина и production-grade инфраструктура с авто-деплоем.
Реализована микросервисная архитектура: админ-панель на Next.js 14, API Gateway и ORM-сервис на NestJS, отдельный сервис обработки изображений. Ядро — динамический ORM: JSON-шаблоны хранятся в реестре и компилируются в схемы MikroORM в рантайме, создавая таблицы и эндпоинты без миграций вручную. Данные в PostgreSQL (раздельные базы под Prisma и динамический ORM), сессии и rate-limit в Redis, изображения в MinIO (S3) с авто-генерацией версий (thumb/mobile/tablet/desktop в avif/webp/jpeg) через Sharp и пер-тенантным хостингом через Cloudflare + Nginx. Авторизация посетителей через OAuth (Google/Yandex), админов — через JWT с ролевой моделью и rate-limiting. Сделаны: система отзывов с рейтингом и денормализованными агрегатами, древовидные комментарии с модерацией, заказы с автоочисткой корзины, вебхуки в Telegram/email/внутренний инбокс. Вся бизнес-логика вынесена в метаданные шаблонов — движок не содержит кода под конкретного клиента. Деплой — push в main → GitHub Actions → VPS в Docker Compose.
Работающая в production платформа: добавление поля в шаблон автоматически создаёт колонку в БД и поле в админке, новые сущности — без ручных миграций. Первый магазин (тротуарная плитка) подготовлен к запуску: каталог с фильтрами и фасетами, авто-расчёт веса/количества товара по характеристикам, отзывы и комментарии с авто-модерацией для авторизованных пользователей, оформление заказов с уведомлениями в Telegram и на email. Производительность оптимизирована (батчинг запросов, кэширование, сжатие, edge-кэш Cloudflare), безопасность усилена (изоляция тенантов, токены сервисов, защита от подделки отзывов, RFC-совместимый rate-limiting). Платформа масштабируется на новых арендаторов и индустрии без доработки ядра — за счёт шаблонов и метаданных.