1. Обзор и архитектура

Что такое витрина

Витрина — публичный сайт бизнеса: интернет-магазин, запись на услуги или и то, и другое. У каждого бизнеса своя витрина на:

Витрина обслуживает покупателя: показать товары/услуги → собрать заказ или запись → принять оплату → показать статус. Управление бизнесом (каталог, заказы, персонал, оплата, доставка) — в панели (app.irisaicrm.shop), это не часть витрины.

Три роли — и что каждая держит

Роль Что это Что держит
Ядро (платформа) API + бизнес-логика + БД данные, корзина/состояние, подсчёт сумм, остатки, заказы, записи, оплата, доступность слотов
Рантайм витрины сайт, который видит покупатель рендер темы, проксирование к ядру с ключом, сессия покупателя
Тема бандл шаблонов + CSS + JS только внешний вид витринных экранов

Ключевой инвариант: тема управляет ВИДОМ, платформа — ДАННЫМИ и ДЕНЬГАМИ. Тема не считает цены, не трогает оплату, не выполняет серверный код.

Почему так: темы пишут ИИ и сообщество

Раз авторы тем недоверенные, тема обязана быть песочницей:

Это модель Shopify (Liquid + один рантайм + платформенный checkout), выбранная сознательно: только так можно безопасно пустить чужой код в рендер и иметь тысячи тем без дублирования логики.

Исключение: несколько флагманских тем, которые пишем МЫ (доверенные), или headless-партнёры могут быть отдельными .NET-проектами — но это не путь для массовых тем.

Градиент владения: вид vs данные

Чем ближе к деньгам — тем меньше свободы у темы.

Экран Разметка (ВИД) Состояние / логика / подсчёты (ДАННЫЕ)
Главная / каталог / товар / услуга тема платформа (read)
Корзина (страница / drawer) тема платформа (позиции, кол-во, итоги, остатки)
Выбор слота / мастера (запись) тема платформа (доступность, удержание слота)
Checkout (контакт → оплата → подтверждение) платформа (токены + блоки темы) платформа
Статус заказа / записи, аккаунт платформа (токены темы) платформа

Правило: markup может быть темы почти везде; но вычисления денег/остатков/доступности и оплата — всегда платформа. Тема их отображает, а не считает.

Как это собрано технически

Покупатель (браузер)
        │  только к своей витрине, без ключей платформы
        ▼
Рантайм витрины  ──►  рендер выбранной ТЕМЫ (Liquid) на данных из ядра
        │  server-side, приватный X-Api-Key
        ▼
Ядро платформы (API)  ──►  каталог · корзина · заказы · запись · оплата · доступность
        │
        ▼
Postgres · Redis (корзина) · RabbitMQ (уведомления)

Что дальше