Модульная архитектура
Вход, права, файлы, интеграции и журналы находятся в ядре, отраслевая логика в отдельных модулях. Релиз собирается под редакцию: застройщик не получает код интернет-магазина, и наоборот.
Бизнес Витрину мы разработали сами: CMS и ядро на PHP 8.4/8.5, отдельная база данных у каждого клиента, отраслевые модули на общем коде. Интернет-магазины работают в нашем облаке или на сервере заказчика, решения для недвижимости и HoReCa ставятся на сервер заказчика.
Современный стек и собственное ядро. Каждый компонент выбран под задачи сайта продаж: скорость, надёжность, простое сопровождение.
| CMS | Своя система управления сайтом: страницы и блоки, меню, баннеры и слайдеры, SEO-настройки, шаблоны оформления, права редакторов. Можно сделать сайт целиком на платформе или встроить каталог виджетом в уже работающий сайт. |
|---|---|
| Ядро | PHP 8.4 и 8.5, строгая типизация во всём коде. Собственный микрофреймворк: DI-контейнер, маршрутизация, слои Domain, Repository и Service. Платформа мультиарендная: клиент определяется по домену, у каждого свои настройки и данные. |
| Данные | У каждого клиента своя база SQLite в режиме WAL, данные разделены на уровне файлов, а не условием в SQL-запросе. Центральный реестр облака работает на MySQL 8. Миграции схемы применяются автоматически при обновлении. |
| Поиск | Два слоя: полнотекстовый индекс FTS5 с ранжированием BM25, затем языковая модель переупорядочивает выдачу, ответы кэшируются. Поиск понимает опечатки, синонимы и запросы своими словами. Модель клиент выбирает сам. |
| Фронтенд | Витрина и виджет на Vue 3. Виджет работает в Shadow DOM и не конфликтует со стилями и скриптами сайта, на который его ставят. Страницы каталога заранее собираются в статический HTML с разметкой Schema.org: поисковик и покупатель сразу получают готовую страницу. Картинки отдаются в WebP, на телефон уходит облегчённая версия. |
| Панель управления | Серверный рендеринг на Twig 3 и Alpine.js. Страницы открываются быстро, тяжёлого SPA нет. |
| Медиа и документы | Картинки проверяются по содержимому, конвертируются в WebP с отдельной версией для телефона, одинаковые файлы хранятся один раз. Счета в PDF с QR-кодом оплаты по ГОСТ Р 56042-2014. |
| Инфраструктура | Debian, nginx, PHP-FPM, MySQL в Docker, сертификаты Let's Encrypt. CMS на своём сервере ставится и на обычный хостинг с Apache. |
| Обновления | Новые версии выходят регулярно и ставятся без переустановки, данные и настройки сохраняются. Каждая версия проходит автоматические тесты; если после обновления что-то пошло не так, платформа сама возвращает прежнюю версию. |
| Интеграции | 1С · CommerceMLYML-фидExcel / CSVMacroCRMDaDataЯндекс КартыБитрикс24amoCRMCalltouchCoMagicЯндекс МетрикаИнтернет-эквайрингiikor_keeperMAXTelegramSMTPDeepSeekClaude |
Вход, права, файлы, интеграции и журналы находятся в ядре, отраслевая логика в отдельных модулях. Релиз собирается под редакцию: застройщик не получает код интернет-магазина, и наоборот.
Облако и CMS на своём сервере собираются из одного кода. Интернет-магазин можно запустить в облаке, а потом перенести на свой сервер без доработок. Недвижимость и HoReCa ставятся сразу на сервер заказчика. Обновления ставятся поверх, данные и шаблон не затрагиваются.
У каждого клиента своя база данных. Нагрузка или сбой у одного не сказываются на остальных, а чужих данных в базе клиента просто нет.
Каталог из 1С, объекты и цены из CRM обновляются по расписанию. Ручные правки хранятся отдельно, и следующая загрузка их не затирает. По каждому объекту виден журнал изменений.
В ядре три сторонние библиотеки, а не сотни пакетов. Меньше риск получить уязвимость или поломку через чужой пакет.
Новые возможности выходят часто и ставятся поверх, без потери данных. Автотесты и автоматический откат делают обновления безопасными.
Базы клиентов растут независимо, и большой каталог одного проекта не замедляет остальные. Центральная часть облака уже работает на MySQL 8, крупный проект можно перевести на неё же.
200–500 тысяч объектов в каталогеПо нашей оценке, столько выдерживает один сервер. Это масштаб федерального застройщика или крупного ритейлера.
Быстрое чтение каталогаПолнотекстовые индексы, кэш поиска и заранее собранные страницы каталога.
Выделенные серверыДля высокой нагрузки база и приложение разносятся на отдельные серверы.