Тема
Нишевые готовые решения и сборки
Ниши, которых нет в отдельных файлах каталога: честная оценка «есть готовое OSS» vs «собирать из пакетов» + карта подсистем. Легенда — как в README.md: 🟢 активно, 🟡 живо с оговорками, 🔴 заброшено/риск.
1. Бронирование / booking (услуги, записи на приём, аренда, отели)
Зрелого готового OSS для Laravel нет. Единственный живой пакет — планировщик слотов, не «booking-система под ключ»:
| Пакет | Статус | Заметка |
|---|---|---|
| ludoguenet/laravel-zap | 🟢 | v1.15.4, MIT, 119k downloads — управление расписаниями/периодами, не бронирование целиком |
| rinvex/laravel-bookings | 🔴 | Abandoned на Packagist |
| timegridio/concierge | 🔴 | Abandoned, под Laravel 5.x |
| cortex/bookings | 🔴 | Abandoned |
Собирать из пакетов, доменную модель (слот, ресурс, пересечения) — свою:
| Подсистема | Пакет | Примечание |
|---|---|---|
| Интервалы дат, пересечения броней | spatie/period → packages.md | Overlap-проверки без ручной арифметики дат |
| График работы, перерывы, праздники | spatie/opening-hours → packages.md | |
| Слоты/расписание ресурса | laravel-zap либо своя таблица booking_slots | Zap — если подходит его модель Schedule/Period |
| Статус брони (workflow) | spatie/laravel-model-states → packages.md | Черновик → подтверждена → оплачена → завершена/отменена |
| Напоминания за N часов | Laravel scheduler + notifications | Job по расписанию, не cron в коде |
| Предоплата/депозит | ЮKassa → ru-specific.md | |
| Календарь в админке | Filament + community FullCalendar-плагин | Проверять живость плагина перед подключением |
Когда брать своё: Filament + доменная модель почти всегда быстрее, чем натягивать чужой booking engine под нетиповые правила (мультиресурсность, филиалы, скидки на объём). Когда не брать своё: клиенту хватит Calendly/YCLIENTS по подписке — дешевле для всех.
2. LMS / онлайн-обучение (курсы, уроки, прогресс, тесты)
| Продукт | Статус | Заметка |
|---|---|---|
| EscolaLMS/API | 🟡 | MIT, активные релизы (июнь 2026), но требует Laravel 9 — апгрейд на 11/12 не тривиален; headless, без своего фронта не запустить |
| lms-laravel/lms-laravel | 🔴 | Заявлен как «LMS», по факту скелет Laravel |
| ulearnpro, pluslms, badaso/lms-module и т.п. | 🔴 | Единицы загрузок, заброшены/пет-проекты |
Под текущий стек студии (Laravel 11/12) EscolaLMS тянет устаревший мажор — риск для нового проекта. Для типового «курсы на сайте» дешевле собрать самим:
| Подсистема | Пакет | Примечание |
|---|---|---|
| Курс → модуль → урок | FK-иерархия (2 уровня) или staudenmeir/laravel-adjacency-list → packages.md | Nested set обычно избыточен |
| Видео/файлы уроков | spatie/laravel-medialibrary → packages.md | Конверсии превью, доступ через signed URL |
| Прогресс прохождения | своя модель lesson_progress (user_id, lesson_id, completed_at) | Простой pivot со статусом |
| Тесты/квизы | своя модель — см. нишу 6 | Готовых зрелых quiz-пакетов нет |
| Сертификат по окончании | spatie/browsershot + spatie/laravel-pdf → packages.md | PDF из Blade-шаблона |
| Доступ по покупке курса | bavix/laravel-wallet или прямой платёж ЮKassa → packages.md, ru-specific.md | Cashier не годится для РФ |
| Админка курсов | Filament (Course → Module → Lesson) | Реордер уроков — eloquent-sortable |
Когда брать готовое: только если клиент осознанно принимает Laravel 9 как отдельный форк-проект вне общего апгрейд-цикла студии. Иначе — своя сборка. Когда не брать своё: нужен зрелый SCORM/webinar в промышленном объёме — указать на готовые SaaS (Stepik, GetCourse) вместо разработки с нуля.
3. Недвижимость / классифайды (объявления, фильтры, карта)
Готового OSS-классифайда под РФ-рынок нет. На Packagist — только SDK под западные MLS-протоколы (RETS, TouchEstate, Centris, UK property data), нерелевантные для русскоязычных объявлений.
Решается архитектурой каталога (как проект catalog студии, см. таблицу MCP-проектов в корневом CLAUDE.md) — это каталог с фильтрами и гео, не отдельная категория:
| Подсистема | Пакет | Примечание |
|---|---|---|
| Атрибуты объявления (площадь, этаж, тип) | отдельные столбцы под фильтруемые, JSON — под остальное | По migrations.md: не индексируемое в JSON |
| Поиск с фасетами | laravel/scout + Meilisearch → packages.md | Дефолт студии |
| Гео (радиус, полигон района) | clickbar/laravel-magellan (PostGIS) → packages.md | Functional/GIN индексы как в catalog |
| Карта на фронте | Leaflet+OSM либо Яндекс Карты → ru-specific.md | Яндекс привычнее для РФ-аудитории |
| Фото объявления | spatie/laravel-medialibrary → packages.md | Responsive conversions под карточки/галерею |
| Избранное, сравнение | своя pivot-таблица | Пакет не нужен |
| Модерация | spatie/laravel-model-states → packages.md | На модерации → опубликовано → снято |
Когда брать готовое: никогда — зрелых OSS-классифайдов под Laravel не существует. Когда не брать полный стек: простой листинг без гео/фильтров ближе к блогу/каталогу — не тянуть PostGIS ради полусотни объявлений.
4. События / билеты / афиша
Продажа билетов + QR на входе — типовая e-commerce-задача плюс QR-генерация, оба кирпича готовы и живые.
| Подсистема | Пакет | Примечание |
|---|---|---|
| Оплата билета, корзина, чек | Lunar или Vanilo → ecommerce.md | Билет = товар с ограниченным stock (мест) |
| QR-код билета | simplesoftwareio/simple-qrcode | 🟢 MIT, 30M+ downloads, активен |
| Расписание сеансов на площадке | spatie/period → packages.md | Проверка пересечений сессий |
| Билет на почту с вложением | Mailable + spatie/laravel-pdf → packages.md | Билет = PDF с QR |
| Валидация QR на входе | своя страница/API + laravel/sanctum → packages.md | Endpoint «отметить билет использованным» |
| Готовое приложение целиком | classiebit/eventmie | 🟡 Активен, но нишевый (~2k downloads) — аудит кода перед прод |
Когда брать своё решение: Lunar/Vanilo + QR-пакет закрывают большую часть — корзину/оплату с нуля не писать. Когда не брать своё: разовое мероприятие клиента — проще Timepad/Ticketscloud (виджет), чем разворачивать стек ради одного ивента.
5. Доставка еды / заказ из ресторана
Меню + корзина — стандартный e-commerce; специфика — зоны доставки (гео) и статус заказа в реальном времени. Готового «Delivery Club клона» на Laravel нет и не нужно — собирается из уже проверенных кирпичей.
| Подсистема | Пакет | Примечание |
|---|---|---|
| Меню, модификаторы блюд | Lunar/Vanilo (варианты товара) → ecommerce.md | «Без лука», размер — варианты товара |
| Корзина, чек, оплата | Lunar/Vanilo | Тот же движок, что для обычного магазина |
| Зона доставки (полигон) | clickbar/laravel-magellan, ST_Contains → packages.md | Проверка на уровне БД, не в PHP |
| Статус заказа (принят→готовится→в пути→доставлен) | spatie/laravel-model-states → packages.md | Конечный автомат, не строка |
| Realtime-трекинг статуса | laravel/reverb + laravel-echo → packages.md | Без Pusher |
| Часы приёма заказов | spatie/opening-hours → packages.md | |
| Курьерская логистика/диспетчер | готового OSS нет | Внешний сервис/API, не писать TSP-роутинг самим |
Когда брать своё: всегда для меню/корзины/статусов — студия уже умеет собирать такой e-commerce. Когда не брать своё: логистика в масштабе — интеграция с внешним сервисом доставки (Яндекс.Доставка и т.п.), не собственная разработка.
6. Опросы / формы / квизы
Зрелых quiz/form-builder пакетов под Laravel нет — все найденные на Packagist от 0 до нескольких сотен загрузок, часть abandoned (pandoapps/quiz, arthurmelikyan/quizable). Ни один не тянет на готовое решение.
Собирать на Filament — там всё нужное есть из коробки:
| Подсистема | Решение | Примечание |
|---|---|---|
| Конструктор полей (админка) | Filament Forms (ядро) | Repeater → вопросы как отдельная таблица questions |
| Хранение ответов | своя модель survey_responses (JSON answers, cast array) | JSON — только нефильтруемое, см. anti-hardcode.md |
| Ветвление вопросов | условия в questions.meta | Редкий кейс — не тянуть пакет ради него |
| Публичная форма | Blade + Alpine.js или Livewire | Без лишнего JS-фреймворка |
| Антиспам | spatie/laravel-honeypot → packages.md | Первый рубеж на любую публичную форму |
| Статистика по опросу | Filament widget (агрегаты) | Без отдельной BI-надстройки |
Когда брать стороннее: NPS/опрос на 3 вопроса, не встраиваемый в остальной сайт — можно и Google Forms/Тильда. Когда не брать своё: сложный экзаменационный движок (тайминг, рандомизация, защита от списывания) — отдельная серьёзная разработка, оценивать отдельно.
7. Портфолио / агентство / визитка
Самый частый заказ студии. Готовые CMS (cms.md) избыточны для 5-10 страниц: админка, которую не будут вести ежедневно, только усложняет поддержку и апгрейды.
Свой каркас на Filament, не CMS. Основа — starter-kits.md (auth-скаффолдинг) + пара ресурсов:
| Подсистема | Решение |
|---|---|
| Страницы (о нас, услуги, контакты) | 1 ресурс Page (slug + Blade-блоки/RichEditor) |
| Портфолио/кейсы | 1 ресурс CaseStudy + spatie/laravel-medialibrary → packages.md |
| Форма заявки | FormRequest + spatie/laravel-honeypot → packages.md; типовой модуль leads → blueprints/README.md |
| SEO по страницам | SeoService + seo_blocks → seo.md |
| Блог (если нужен) | Page с типом post либо отдельный Post — по объёму контента |
Когда брать готовое: клиент сам ведёт контент ежедневно, нужен зрелый редакторский UX — тогда Statamic из README.md. Когда не брать: статичная визитка с редкими правками — своя сборка на Filament быстрее и дешевле в поддержке.
Практический вывод для студии
| Ниша | Готовое OSS | Рекомендация |
|---|---|---|
| Booking | Нет (только spatie-кирпичи) | period + opening-hours + model-states |
| LMS | 🟡 EscolaLMS, но на Laravel 9 | Своя сборка на актуальном стеке |
| Недвижимость/классифайды | Нет | Архитектура catalog: Scout+Meilisearch, PostGIS |
| События/билеты | Кирпичи готовы (Lunar/Vanilo + simple-qrcode) | Собирать, платёжное ядро не писать самим |
| Доставка еды | Нет цельного, кирпичи готовы | Lunar/Vanilo + PostGIS зоны + model-states |
| Опросы/квизы | Нет | Filament Forms + своя модель ответов |
| Портфолио/визитка | Не нужно | Свой каркас на Filament, не CMS |
Во всех семи нишах специализированного «коробочного» продукта либо нет, либо он привязан к устаревшему мажору Laravel. Экономия — не в поиске чудо-пакета, а в комбинировании кирпичей из packages.md вокруг тонкого доменного слоя: то же соотношение ~60/40 (готовое/своё), что и в marketplace.md.