Тема
Фаза 0 — Канонический стек и фронтенд трёх зон
Статус: единый источник версий (single source of truth). Точные версии всех слоёв для всех трёх зон. Любая версия в других разделах должна совпадать с этой страницей; при расхождении — правда здесь. Обоснование выбора Laravel 13 (а не 12) — целевая платформа; зонирование фронта (почему Blade, а не React-темы) — фронт-архитектура. Здесь — что именно ставить и каких версий.
Целевой стек (июль 2026)
| Слой | Технология | Версия | Обязательность |
|---|---|---|---|
| Язык | PHP | 8.4 (эталон), минимум ^8.3 | required |
| Фреймворк | Laravel | 13.x | required |
| БД | PostgreSQL | 16+ (JSONB+GIN для типов контента) | required |
| Кеш/очереди/сессии | Redis | 7+ | required |
| Очереди-мониторинг | Laravel Horizon | ^5 | required (парк) |
| HTTP-рантайм | PHP-FPM (базовый) → Laravel Octane (FrankenPHP по умолч., Swoole/RoadRunner опция) | Octane ^2 | FPM required; Octane — опция для нагруженных (после аудита Octane-safety, см. производительность) |
| Админка | Filament | ^5.6.6 (нижняя граница L13-совместимости) | required |
| Админ-рантайм | Livewire | 4 (внутри Filament v5) | транзитивно |
| Сборка ассетов | Vite | ^8 (парк уже на 7–8, см. матрицу версий) | required |
| CSS | Tailwind CSS | ^4 | required |
| Публичный интерактив (лёгкий) | Alpine.js | ^3 | по потребности |
| Острова/кабинет | React | 19 | по потребности |
| Кабинет-мост | Inertia.js | адаптер inertia-laravel ^3 (протокол Inertia 2) | только зона 3 |
| SSR-рантайм кабинета | Node.js | 22 LTS | только зона 3 |
| Иконки | Blade Icons / Heroicons | актуальные | required |
| Тесты | Pest / PHPUnit | Pest 4 / PHPUnit 12 | required (cms-testing) |
Критичный пин.
filament/filament: ^5.6.6, не^5.0: версии 5.0–5.3.5 требуютilluminate/contracts ^11|^12и сломают установку на Laravel 13. Это тот класс «непонятных ошибок при установке», который ловит preflight (жизненный цикл модулей). Подробности и источники — целевая платформа.
Требования к окружению
- PHP-расширения (эталонный Docker-образ):
pdo_pgsql,redis,gd,exif,zip,bcmath,intl,opcache(+pcntlдля Horizon). Единый образ 8.4 для всего парка — проще сопровождать одному разработчику. - PostgreSQL 16+ обязателен (не MySQL): JSONB+GIN, generated-колонки, partial/functional индексы — фундамент типов контента (Q5) и хранения блоков (модель данных).
- Node.js только там, где есть зона 3 (кабинет с SSR). Публичный сайт и админка Node в проде не требуют — Vite собирает ассеты на этапе билда, не в рантайме. Это условие дешёвого хостинга массы сайтов (фронт-архитектура).
- Composer 2, приватный Satis (центр обновлений).
Фронтенд по зонам
Граница зон — по авторизации (фронт-архитектура). Ядро (модели, сервисы, права, движок полей) — общее; различается только слой представления.
Зона 1 — Публичный сайт (до логина)
Стек: Blade + Tailwind 4 (из theme.json-токенов) + Alpine 3 + точечные React-острова (React 19), сборка Vite 8. Сервер отдаёт готовый HTML, работает теговый page-cache.
| Аспект | Решение | Требование |
|---|---|---|
| Рендер | Server-side Blade | обязателен для SEO + page-cache |
| Стили | Tailwind 4, токены из theme.json темы | без инлайн-CSS, без стилей в схеме блока (Q9) |
| Лёгкий интерактив | Alpine 3 / CSS | табы, аккордеоны, меню — не React |
| Тяжёлый интерактив | React 19 остров, точечная гидрация | калькулятор, живой фильтр, конфигуратор, чат |
| SEO | -escaping, JSON-LD, canonical, sitemap | SEO spec |
| Node в проде | не нужен | ассеты собраны Vite при билде |
Дисциплина островов: 3+ острова на странице, знающих друг о друге → это уже приложение, выносить в зону 3. Дизайн из claude.ai/design садится конвертацией JSX→Blade (разметка и Tailwind-классы 1:1), сверка — через галерею блоков.
Зона 2 — Админка (студия + контент-менеджер клиента)
Стек: Filament v5.6.6+ (Livewire 4 + Blade), Tailwind внутри Filament, Vite. Дизайн из claude.ai/design в админку не переносится — это рабочий инструмент, вид даёт сам Filament (адаптивный, тёмная тема из коробки, ноль вёрстки).
| Аспект | Решение | Требование |
|---|---|---|
| Рантайм | Filament v5 (Livewire 4) | ^5.6.6 (L13-совместимость) |
| Формы блоков/типов/форм | движок полей → Filament-компоненты | одна декларация → форма |
| Расширение модулем | Filament-плагин (ресурсы/страницы/виджеты) | контракт модуля |
| Права | Filament Shield + spatie/permission | Q11 |
| Медиа | SpatieMediaLibraryFileUpload | не голый FileUpload |
Filament на Livewire — отдельный от React/Inertia мир; смешивать на одной странице нельзя. «Filament на Inertia» невозможен.
Зона 3 — Клиентские кабинеты (после логина)
Стек: Inertia 2 + React 19 (SSR на Node 22 LTS), Tailwind (тот же theme.json), Vite. Отдельное приложение рядом с ядром, на том же PHP-домене (модели/сервисы/права/движок полей через их PHP-API), но со своим фронт-рантаймом.
| Аспект | Решение | Требование |
|---|---|---|
| Рантайм | Inertia 2 + React 19, SSR | Node 22 LTS в проде (только этой зоны) |
| Когда | богатый интерактив + сквозное состояние после логина | ЛК B2C/B2B, конфигуратор, портал |
| Дизайн | claude.ai/design садится 1:1 без конвертации | React-компоненты как есть |
| Состояние | сквозное между экранами (корзина, черновики) | родная стихия React |
| SEO | не нужен (после логина) | — |
| Данные | через PHP-API ядра/модулей | API-контракт |
Альтернатива для функционального кабинета без дизайн-требований — вторая Filament-панель (дешевле Inertia): CRUD-кабинет не рисуют. Выбор — по чеклисту зоны.
Матрица совместимости (что с чем)
| Пакет | Требует | Проверено на |
|---|---|---|
laravel/framework ^13 | PHP ^8.3 | PHP 8.4 |
filament/filament ^5.6.6 | illuminate/contracts ^13, Livewire 4 | Laravel 13 |
spatie/laravel-medialibrary ^11 | Laravel 11–13 | Laravel 13 |
spatie/laravel-permission ^7.2 | Laravel 11–13 | Laravel 13 |
laravel/sanctum ^4 | Laravel 11–13 | Laravel 13 |
laravel/pennant ^1 | Laravel 11–13 | Laravel 13 |
inertiajs/inertia-laravel ^3 | Laravel 11–13 | Laravel 13 |
laravel/scout ^10 | Laravel 11–13 | Laravel 13 |
lunarphp/lunar (e-commerce модуль) | Filament v5 bridge | по мере заказа |
Полный список готовых пакетов — путь C. Нижние границы, закреплённые в контрактах, — целевая платформа.
Общее для всех зон
- Единые дизайн-токены
theme.json→ Tailwind-пресет: один источник цветов/шрифтов/ радиусов для Blade, Filament-акцентов и React-кабинета. Смена темы = смена пакета темы (контракт темы). - Общее ядро — PHP-домен (модели, сервисы, права, движок полей, три оси) одно на все зоны; зоны различаются только рендером.
- Vite — единая сборка ассетов всех зон (разные entry-points, один конфиг токенов).
Политика версий
- следуем за мажором Laravel в течение квартала после релиза (волнами через центр обновлений) — целевая платформа;
- Filament — минорные апгрейды свободно, мажор (v6+) — по той же волновой процедуре;
- Node LTS — переход на следующий LTS раз в цикл; PHP-минимум ядра поднимаем осознанно отдельным мажором ядра.
Чеклист фазы 0 (стек)
- [ ] Эталонный Docker-образ PHP 8.4 с набором расширений — единый для парка.
- [ ] PostgreSQL 16+, Redis 7+, Horizon в базовом compose.
- [ ] Пины в
composer.jsonядра:^8.3,laravel ^13,filament ^5.6.6, spatie-набор. - [ ] Vite 8 + Tailwind 4 +
theme.json→пресет — общий конфиг для трёх зон. - [ ] Зона 3 (Inertia+SSR) — Node 22 LTS только там, где кабинет реально нужен.
- [ ] Матрица совместимости проверена CI на Laravel 13 / PHP 8.4.
Связи
- Целевая платформа — почему Laravel 13, источники, риски.
- Фронт-архитектура — почему три зоны, границы, красные флаги.
- Движок полей, контракт темы, API-контракт — детали по зонам.
- Путь C — готовые пакеты; центр обновлений — как парк следует версиям.