Перейти к основному содержимому

systematika-laravel-site

systematika-laravel-site — это Laravel 12 проект для сайта и административной панели Systematika.

Проект нельзя понимать как обычный Laravel-сайт с несколькими контроллерами. Здесь одновременно живут:

  • публичный каталог образовательных продуктов;
  • публичная дорожная карта программ обучения;
  • прокси-слой поверх старого WordPress/v1 сайта;
  • Filament-админка для управления каталогом, программами, баннерами, прокси-страницами, пользователями и справочниками;
  • фоновые задачи для прогрева кэша, смены статусов продуктов и смены тарифов;
  • интеграции с внешними системами GK/MK;
  • SQL-дамп с базовой схемой и начальными справочными данными.

Главная идея проекта: Laravel постепенно забирает на себя части старого сайта, но не полностью заменяет его. Поэтому часть страниц строится локально в Laravel/Livewire, а часть страниц берёт HTML со старого WordPress/v1, очищает или дополняет его и отдаёт как Laravel-страницу.

Быстрая ментальная модель

Запомнить проект проще через пять контуров.

Контур 1. Публичный каталог

Каталог работает через URL из MODERN_CATALOG_URL, по умолчанию это /catalog. URL разбирается в состояние фильтров: предмет, класс, тип продукта, подтип, статус, цель, цена. Потом Laravel выбирает подходящие Product и рендерит Livewire-компоненты.

Контур 2. Дорожная карта

Дорожная карта живёт на /program. Она ведёт пользователя по шагам: предмет, уровень, режим, вариант режима. Некоторые промежуточные страницы сейчас фактически схлопываются в редиректы на дефолтные значения.

Контур 3. Прокси-страницы

Часть URL создаётся не кодом, а записями в таблице landing_proxy_pages. Эти маршруты регистрирует ProxyPageServiceProvider при старте приложения. Страница может брать HTML со старого сайта, кэшировать его и вставлять локальные Livewire/Blade-фрагменты.

Контур 4. Админка

Админка построена на Filament. Путь задаётся ADMIN_PANEL, по умолчанию /dashboard. Доступ в панель определяется не просто ролью admin, а методом User::canAccessPanel() и permission landing_admin_bar:view.

Контур 5. Фоновые процессы

Очереди и cron важны для корректной работы. Без queue worker не прогревается page cache. Без schedule:run не меняются статусы и тарифы по датам.

Где искать правду

Что нужно понятьГде смотреть
Как стартует Laravelbootstrap/app.php
Какие провайдеры подключеныbootstrap/providers.php
Обычные web routesroutes/web.php
API routesroutes/api.php
Cron scheduleroutes/console.php
Публичные динамические routesapp/Providers/Frontend/*
Админкаapp/Providers/Filament/AppPanelProvider.php, app/Filament/Panel/Resources/*
Каталогapp/Domains/ModernCatalog/*, app/Livewire/ModernCatalog/*
Roadmapapp/Domains/ModernRoadmap/*, app/Livewire/ModernRoadmap/*
Основные моделиapp/Models/Education/*, app/Models/Landing/*
Начальная БДdatabase/initial_schema.mysql
Дельты схемыdatabase/migrations/*
Settingsdatabase/settings/*, app/Settings/*

Что важно не перепутать

  • Это не стандартный Laravel auth-only проект: Fortify и Jetstream подключены, но их package routes отключены.
  • Это не обычный Blade-сайт: публичная часть часто работает как гибрид Blade + Livewire + JS history API + HTML, взятый со старого сайта.
  • Это не проект, где все routes видны в routes/web.php: часть routes регистрируется провайдерами, а proxy routes вообще зависят от данных в БД.
  • Это не проект, где чистая БД собирается только миграциями: базовая схема и часть данных приходят из database/initial_schema.mysql.
  • Это не проект, где админский доступ равен роли admin: Filament проверяет permission через User::canAccessPanel().

Как читать эту документацию

Если вы новый разработчик, идите в таком порядке:

  1. Прочитайте Архитектура -> Обзор системы.
  2. Прочитайте Архитектура -> Потоки и границы.
  3. Прочитайте Домен -> Каталог, если работаете с продуктами.
  4. Прочитайте Домен -> Roadmap, если работаете с /program.
  5. Прочитайте Frontend -> Livewire и SPA, если меняете публичный UI.
  6. Прочитайте Frontend -> Filament-админка, если меняете админку.
  7. Прочитайте Reference -> Миграции и модель данных, если меняете БД.
  8. Прочитайте Эксплуатация -> Поддержка и процессы, если запускаете проект или чините production-поведение.