Открыть сервис

Laravel Nova

Laravel Nova — это коммерческая административная панель (панель управления) с открытым исходным кодом для веб-приложений, созданных на фреймворке Laravel. Она предоставляет готовый набор инструментов и интерфейсов для быстрого построения back-office, CRUD-систем и дашбордов, позволяя разработчикам сосредоточиться на бизнес-логике, а не на рутинной реализации стандартных административных функций.

История

Laravel Nova была анонсирована и выпущена в 2018 году компанией Laravel LLC (США), возглавляемой Тейлором Отвеллом, создателем фреймворка Laravel. Проект стал преемником более раннего и менее функционального пакета Laravel Admin, который не получил широкого распространения. Nova с самого начала позиционировалась как премиальный продукт с платной лицензией, что отличало её от многих бесплатных аналогов. Первая публичная версия (v1.0) вышла в августе 2018 года. С тех пор проект активно развивается: выходят новые версии, добавляются функциональные возможности, такие как интеграция с Laravel Spark, поддержка Laravel Jetstream, улучшенные инструменты для работы с отношениями моделей и расширенная система фильтрации.

Классификация и лицензирование

Laravel Nova относится к категории коммерческих пакетов для Laravel. Она не является бесплатным программным обеспечением с открытым исходным кодом (FOSS) в полном смысле, так как для её использования требуется приобретение лицензии. Исходный код доступен для ознакомления и модификации, но его распространение и использование в коммерческих целях без покупки лицензии запрещены. Существует несколько типов лицензий:

  • Single (одиночная): для одного проекта (сайта/приложения).
  • Unlimited (безлимитная): для неограниченного количества проектов одного разработчика или команды.
  • Agency (агентская): для агентств, разрабатывающих проекты для клиентов.

Лицензия не включает право на перепродажу самого пакета как отдельного продукта.

Архитектура и принципы работы

Laravel Nova построена на основе стандартных компонентов Laravel, таких как сервис-провайдеры, фасады, Eloquent ORM и Blade-шаблоны. Она не является отдельным приложением, а устанавливается как Composer-зависимость в существующий проект Laravel.

Основные компоненты

  • Ресурсы (Resources): центральный элемент Nova. Каждый ресурс соответствует Eloquent-модели (например, User, Post, Order) и определяет, как данные этой модели отображаются, редактируются и фильтруются в панели управления. Ресурсы автоматически генерируют CRUD-интерфейс, но могут быть полностью кастомизированы.
  • Поля (Fields): определяют, какие атрибуты модели отображаются на формах и в таблицах. Nova предоставляет множество встроенных типов полей: текст, число, дата, выбор из списка, загрузка файлов, WYSIWYG-редактор (TinyMCE), отношения (BelongsTo, HasMany и т.д.) и другие.
  • Действия (Actions): позволяют выполнять массовые операции над выбранными записями (например, «Опубликовать», «Удалить», «Отправить письмо»). Действия могут быть как простыми, так и сложными, с запросом подтверждения или дополнительных данных у пользователя.
  • Фильтры (Filters): инструменты для сужения выборки данных по определённым критериям (например, по статусу, дате создания, принадлежности к категории).
  • Метрики (Metrics): виджеты для отображения статистических данных на дашборде (например, «Количество пользователей за неделю», «Средний чек», «Новые заказы»). Поддерживаются линейные, круговые и табличные диаграммы.
  • Инструменты (Tools): дополнительные модули, расширяющие функциональность Nova. Это могут быть как встроенные инструменты (например, Horizon, Telescope), так и сторонние пакеты, созданные сообществом.
  • Карты (Cards): небольшие виджеты, которые можно размещать на дашборде или на страницах ресурсов для отображения произвольной информации.

Процесс разработки

Разработчик создаёт классы ресурсов, полей, действий и фильтров, используя PHP и синтаксис Laravel. Nova автоматически строит интерфейс на основе этих определений. Например, для создания ресурса для модели Post достаточно выполнить artisan-команду php artisan nova:resource Post и в сгенерированном классе указать поля, которые будут отображаться. Всё остальное — маршрутизацию, рендеринг HTML, обработку запросов — берёт на себя Nova.

Функциональные возможности

  • CRUD-интерфейс: автоматическое создание страниц для просмотра списка записей, просмотра одной записи, создания и редактирования.
  • Поиск и фильтрация: глобальный поиск по всем ресурсам, а также детальные фильтры для каждого ресурса.
  • Управление отношениями: удобная работа с Eloquent-связями (BelongsTo, HasMany, BelongsToMany, MorphTo и т.д.) через вложенные поля и страницы.
  • Загрузка файлов и изображений: встроенная поддержка загрузки, хранения (локально, S3, DigitalOcean Spaces) и отображения файлов, включая превью изображений.
  • Кастомизация: возможность переопределять шаблоны, добавлять свои CSS/JS, создавать собственные поля, действия, фильтры и инструменты.
  • Локализация: поддержка нескольких языков, включая русский (через сторонние пакеты или ручной перевод).
  • Интеграция с Laravel: полная совместимость с аутентификацией, авторизацией (Gates, Policies), событиями, очередями, кэшированием и другими сервисами Laravel.
  • REST API: Nova автоматически предоставляет JSON API для всех ресурсов, что позволяет использовать её как бэкенд для SPA-приложений или мобильных клиентов.

Применение

Laravel Nova используется для создания административных панелей и бэк-офисов в самых разных областях:

  • Веб-разработка: управление контентом сайтов (CMS), пользователями, заказами, товарами.
  • SaaS-сервисы: панели управления для клиентов (customer portals), дашборды для аналитики.
  • E-commerce: управление каталогом, заказами, клиентами, скидками, поставщиками.
  • Enterprise-приложения: внутренние системы для управления персоналом, финансами, проектами, документами.
  • Образование и наука: системы управления обучением (LMS), базы данных исследований, порталы для студентов и преподавателей.

Преимущества и недостатки

Преимущества

  • Скорость разработки: позволяет создать функциональную административную панель за считанные часы, а не дни или недели.
  • Качество кода: написан на лучших практиках Laravel, легко поддерживается и расширяется.
  • Экосистема Laravel: тесная интеграция с другими официальными пакетами (Horizon, Telescope, Forge, Envoyer).
  • Активное сообщество: большое количество сторонних пакетов, расширяющих функциональность Nova.
  • Документация: подробная и актуальная официальная документация.

Недостатки

  • Стоимость: лицензия является платной, что может быть существенным для небольших проектов или стартапов.
  • Закрытость: хотя исходный код доступен, модель лицензирования ограничивает его свободное распространение и модификацию.
  • Зависимость от Laravel: не может быть использована вне экосистемы Laravel.
  • Сложность кастомизации: для глубокой кастомизации интерфейса требуется знание Vue.js и архитектуры Nova, что может быть нетривиально.
  • Ограниченная гибкость: некоторые нестандартные сценарии могут быть сложны для реализации в рамках шаблонов Nova.

Альтернативы

  • Laravel Filament: бесплатный, с открытым исходным кодом, с современным интерфейсом на Livewire.
  • Laravel Backpack: коммерческий пакет, ориентированный на гибкость и кастомизацию.
  • Laravel Orchid: бесплатный, с открытым исходным кодом, с акцентом на структурированную архитектуру.
  • Voyager: бесплатный, но менее активно развивающийся пакет.
  • Самописное решение: полный контроль, но требует значительных временных затрат.

Интересные факты

  • Laravel Nova была написана с использованием Vue.js для фронтенда и Laravel для бэкенда.
  • Пакет распространяется через официальный сайт Laravel Nova, а не через Packagist, что является частью его лицензионной модели.
  • Существует множество сторонних пакетов, расширяющих Nova, например, для интеграции с Google Analytics, Stripe, Slack, Telegram и другими сервисами.
  • В 2020 году была выпущена версия 3.0, которая принесла поддержку Laravel 8 и значительные улучшения в производительности и интерфейсе.
  • Несмотря на коммерческий статус, Nova активно поддерживается и обновляется командой Laravel, что гарантирует её совместимость с новыми версиями фреймворка.

Источники

  • Официальная документация Laravel Nova
  • Репозиторий Laravel Nova на GitHub
  • Статьи и руководства на Laravel News
  • Документация фреймворка Laravel

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →