# KORZILLA X

Мультисайтовая CMS на Laravel 13 + MySQL 8. Одна установка обслуживает
300–500 сайтов: общий код, общая база, разделение по `site_id`.

Переписывается с нуля. Предыдущая версия работает и переносу не подлежит —
новые сайты создаются здесь, старые остаются там.

## Быстрый старт

```bash
composer install
cp .env.example .env && php artisan key:generate
php artisan migrate
php artisan db:seed --class=DemoSitesSeeder
php artisan module:discover
php artisan serve --host=127.0.0.1 --port=8123
```

```bash
curl -H "Host: medtehnika.ru" http://127.0.0.1:8123/
```

## Документация

Разбита по логическим узлам — **[docs/](docs/README.md)**.

| Узел | О чём |
|---|---|
| [architecture](docs/architecture.md) | слои, инварианты, точки расширения |
| [modules](docs/modules.md) | модульная система |
| [multitenancy](docs/multitenancy.md) | сайты, домены, изоляция арендаторов |
| [structure](docs/structure.md) | разделы, адреса, редиректы |
| [components](docs/components.md) | компоненты, поля, шаблоны |
| [layout](docs/layout.md) | зоны, блоки, сетка |
| [catalog](docs/catalog.md) | товары, цены, фильтры, фасеты |
| [admin](docs/admin.md) | админка на Vue 3 + Inertia |
| [settings](docs/settings.md) | настройки и схемы |
| [cache](docs/cache.md) | кэш на счётчиках версий |
| [database](docs/database.md) | схема БД |
| [development](docs/development.md) | окружение, команды, соглашения |
| [roadmap](docs/roadmap.md) | этапы и готовность |

## Состояние

Готовы этапы **M0–M5**:

- мультиарендность, модульная система, настройки со схемами;
- дерево разделов, резолв URL без запросов в базу, авто-301;
- зоны и блоки на 24-колоночной сетке;
- админка на Vue 3 + Inertia: разделы, раскладка, медиатека, универсальный
  рендерер форм настроек, конструктор типов страниц;
- девять контентных модулей и общий экран содержимого раздела;
- каталог: цены по городам и группам, характеристики, фасетный поиск.

Гейт каталога пройден: 100 тыс. товаров, фасетная страница p95 127 мс —
разбор оптимизации в [catalog.md](docs/catalog.md#производительность).

Следующий — M6: коммерция и авторизация. Состояние работ и порядок действий —
[roadmap](docs/roadmap.md).

## Гейты

```bash
composer gate     # deptrac + pint + phpunit + vitest
```

Все четыре обязаны быть зелёными перед коммитом. Для последнего нужен `node`
в PATH — в терминале Laragon он есть.
