За четыре года заказной разработки на Laravel я собирал панели администратора минимум пятью разными способами: руками на Blade, на связке Vue плюс API, на пакетах вроде Backpack, и, конечно, на Laravel Nova и Filament. Если сравнивать по деньгам, скорости разработки и тому, что происходит с проектом через год поддержки, разница между Laravel Nova админкой и Filament куда серьёзнее, чем кажется по рекламным постам в блогах.
Что такое Laravel Nova админка и чем от неё отличается Filament
Nova - официальный пакет от команды Laravel, платный, с закрытым исходным кодом фронтенда. Внутри - SPA на Vue, которое ставится поверх артисан-команд вашего приложения и общается с бэкендом через собственный API-слой. Ставили Nova клиентам, которым нужна была предсказуемая, фирменная админка без сюрпризов - и её действительно не было.
Filament - open-source пакет на Livewire, Alpine.js и Tailwind, полностью бесплатный по MIT-лицензии. Он не тянет отдельный фронтенд-стек: всё рендерится на сервере через Livewire-компоненты, а интерактивность добавляет Alpine. Для меня как для бэкенд-разработчика это ощутимая разница: не нужно держать в голове ещё один JS-фреймворк, весь код резолвится в PHP-классах.
| Параметр | Laravel Nova | Filament |
|---|---|---|
| Лицензия | Платная, на сайт или пожизненная | Бесплатная, MIT |
| Стек фронтенда | Vue (SPA) | Livewire + Alpine + Tailwind |
| Открытый код | Только исходники для кастомизации, ядро закрыто | Полностью открыт на GitHub |
| Первый релиз | 2018 | 2021 (v1), сейчас v3 |
| Порог входа | Ниже, если знаком с Vue-компонентами Nova | Ниже для тех, кто и так пишет на Blade/Livewire |
Стоимость лицензии Laravel Nova и совокупная цена владения
Цена лицензии Nova считается по сайтам - актуальные цифры смотрите на официальном сайте Laravel Nova, но по порядку величины это единицы сотен долларов за сайт или разовый платёж за пожизненную лицензию с бессрочным использованием и годом обновлений. Для одного внутреннего проекта сумма не критична, но если у агентства десяток клиентских бэкендов на Nova, лицензии превращаются в постоянную статью расходов.
Filament в этом смысле проще: панель бесплатна, платить можно разве что за платные плагины экосистемы (например, продвинутый billing или spatie-интеграции), но базовый CRUD, формы, таблицы и дашборды - всё без лицензионных ограничений.
Совокупная цена владения складывается не только из лицензии. Я считаю трудозатраты: на типовой внутренний бэкенд с 10-15 ресурсами (заказы, товары, пользователи, статусы оплаты) и на Nova, и на Filament уходит примерно одинаковое время - 3-5 рабочих дней на MVP-версию. Разница вылезает на кастомных виджетах и нестандартных полях: с Filament я трачу меньше времени, потому что не упираюсь в закрытый API компонентов Nova и могу переопределить любой Livewire-компонент напрямую.
Установка и первые впечатления от настройки панели
Установка Filament - одна команда через composer и артисан:
composer require filament/filament
php artisan filament:install --panels
php artisan make:filament-user
Панель уже доступна по адресу /admin, остаётся сгенерировать ресурсы под модели:
php artisan make:filament-resource Order --generate
У Nova установка похожа по духу, но требует привязки composer-репозитория с логином и паролем от лицензии:
composer config repositories.nova '{"type": "composer", "url": "https://nova.laravel.com"}'
composer require laravel/nova
php artisan nova:install
php artisan nova:user
На старте проекта это лишний шаг: нужно завести аккаунт на nova.laravel.com, привязать лицензию к composer auth.json, и только потом собирать образ для CI - на первом деплое я пару раз терял час именно на этом.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Ресурсы, поля и формы: как выглядит код на практике
Вот ресурс заказа на Filament - форма и таблица описываются в одном классе, декларативно:
public static function form(Form $form): Form
{
return $form->schema([
TextInput::make('number')->disabled(),
Select::make('status')
->options(OrderStatus::class)
->required(),
TextInput::make('total')->numeric()->prefix('₽'),
]);
}
public static function table(Table $table): Table
{
return $table->columns([
TextColumn::make('number')->searchable(),
BadgeColumn::make('status'),
TextColumn::make('total')->money('rub'),
]);
}
Аналог на Nova чуть многословнее и завязан на собственные классы полей:
public function fields(NovaRequest $request)
{
return [
Text::make('Number')->readonly(),
Select::make('Status')->options(OrderStatus::asSelectArray()),
Currency::make('Total')->currency('RUB'),
];
}
По синтаксису разница небольшая, но Filament даёт схему формы и таблицы как отдельные независимые методы, что удобно для переиспользования между несколькими ресурсами - в проекте с интернет-магазином я выносил общий блок полей адреса доставки в трейт и подключал его и к заказам, и к возвратам.
Расширяемость: пакеты, плагины и интеграции с внешними сервисами
У Nova есть маркетплейс инструментов (Nova Tools), но большая часть полезных - платные, и их поддержка часто отстаёт от актуальной версии Laravel на месяц-два после релиза.
У Filament экосистема плагинов заметно шире и почти вся бесплатная: готовые виджеты для spatie/laravel-permission, экспорт в Excel, билдеры конструкторов страниц, интеграции с S3. На одном из проектов я подключал к Filament-панели статусы оплаты из T‑Bank эквайринга и статусы доставки СДЭК - оба кастомных виджета уложились в пару дней, потому что Livewire-компонент легко переопределить без танцев с Vue-сборкой, как пришлось бы делать в Nova.
Если нужна не типовая CRUD-панель, а бэкенд с нестандартной логикой - очередями, вебхуками от эквайринга, синхронизацией остатков - обычно проще сразу заказать разработку бэкенда на Laravel под конкретные процессы, а не пытаться уместить всю бизнес-логику в стандартные ресурсы админки.
Производительность, стек и удобство ежедневной работы
Nova компилирует отдельный Vue-бандл, и при апгрейде Laravel до новой мажорной версии иногда приходится ждать, пока команда Nova выпустит совместимую сборку - на переходе на Laravel 11 я ждал апдейта пакета около трёх недель, пока часть кастомных полей не начала падать с ошибками в консоли браузера.
Filament живёт внутри того же PHP-процесса, что и всё приложение: нет отдельной сборки ассетов под конкретную версию фреймворка, обновления Laravel обычно проходят без сюрпризов. Из минусов - Livewire делает запрос на сервер при каждом взаимодействии с формой, и на слабом хостинге с медленным PHP-FPM это ощущается на больших формах с 20+ полями, особенно если валидация цепляет несколько связанных таблиц.
По UI обе панели выглядят современно и настраиваются под брендинг клиента: логотип, цветовая схема, кастомные иконки - без проблем в обоих случаях.
Когда я беру Nova, а когда Filament - практические кейсы
- Внутренняя CRM для B2B-клиента с готовым бюджетом на лицензии и требованием фирменного UI - брал Nova, клиента устраивала предсказуемость и официальная поддержка от команды Laravel.
- Админка интернет-магазина с нестандартными сущностями (промокоды, партнёрские ссылки, статусы возвратов) - Filament, потому что кастомные ресурсы и виджеты собираются быстрее без ограничений закрытого API.
- Стартап с ограниченным бюджетом на MVP - всегда Filament: экономия на лицензии напрямую снижает смету на бэкенд, который у меня стартует от 100 000 ₽.
- Проект, где заказчик уже держит несколько сайтов на Nova и не хочет учить команду новому стеку - оставляю Nova ради консистентности между проектами.
Общее правило, которое сложилось на практике: если панель - типовой CRUD с несколькими десятками ресурсов и бюджет на лицензии не проблема, Nova не подведёт. Если нужно быстро прототипировать, часто менять логику форм и не платить за каждый новый сайт клиента, Filament выигрывает по деньгам и скорости итераций.
API и серверная часть под SPA
API / Бэкенд
от 100 000 ₽
Подробнее →Частые вопросы
Можно ли пользоваться Laravel Nova бесплатно?
Нет, Nova распространяется по платной лицензии на сайт или как разовый платёж за пожизненное использование с годом обновлений - актуальную цену смотрите на официальном сайте пакета. Бесплатной версии или триала без ограничений функций у Nova нет.
Filament подходит для сложных корпоративных панелей с десятками ролей?
Да, я собирал на Filament панели с гибкой системой ролей через spatie/laravel-permission, множественными панелями (отдельно для админов и для менеджеров) и вложенными ресурсами - ограничений по масштабу на практике не встречал, всё упирается в архитектуру самого приложения, а не в возможности пакета.
Можно перейти с Nova на Filament без переписывания всего проекта?
Модели и бизнес-логика останутся без изменений, но ресурсы, поля и формы придётся переписать заново под синтаксис Filament - это не автоматическая миграция. На проекте среднего размера с 15-20 ресурсами перенос занимает обычно полторы-две недели работы одного разработчика.
Что проще освоить разработчику без опыта с Livewire?
Nova ближе тем, кто уже писал на Vue и знаком с компонентным подходом на фронтенде. Filament быстрее осваивают разработчики, которые пишут преимущественно на Blade и PHP - Livewire в этом случае воспринимается как естественное продолжение привычного стека, а не отдельная технология для изучения.