Laravel admin panel: 8 ready-made solutions
Greetings, friends!🙂
My long break from writing articles about Laravel PHP framework is finally over, which I arranged for myself half a year ago, writing the last post at the moment about updating Laravel versions on existing projects.
To be honest, I did not plan to make it so long. Initially, the plans included a month and 2-3 articles about captcha, the principles of work, and earnings on which I then got carried away. Yes, and I was also tired of Laravel at that time, because. For several months I wrote only about him.
As a result, the planned month dragged on for 6, and 2-3 articles for 22 publications on extraneous topics. Naturally, all this led to the fact that I terribly missed Laravel, i.e. the purpose of the vacation was fully achieved🙂
So, I decided to start my Laravel comeback by continuing to create a corporate site on this framework, which currently has only the front part with a contact form available.
Since it assumes the possibility of blogging, then, of course, we cannot do without an admin panel. When choosing it, there are two ways: use a ready-made one or write your own.
Therefore, in order to decide, I decided to review the existing Laravel admin panel packages today: their features, advantages and disadvantages.
Go!🙂
CONTENT
- Laravel admin panel overview: features
- Visual Designers Laravel admin panel
- Laravel Voyager
- Laravel QuickAdmin
- Laravel Admin Generators
- Z-Song Laravel admin
- InfyOm Laravel Generator
- Laravel Sleeping Owl Admin
- Laravel CRUD Generator by AppzCoder
- Laravel admin panel: rejected solutions
- Laraadmin
- FrozenNode Laravel-Administrator
- Laravel admin panel overview: features
Before we start, a few words about the features of today's review. First of all, this is the Laravel version.
In the article, you will see a description of only those products that are compatible with Laravel 5.5, because. at the moment, this is the current version of our Laravel portfolio site (in the near future, when I finally start implementing the admin area on the site, I plan to upgrade to 5.6, so keep an eye on the commits in the repository).
You will see outdated packages that did not start for me at the end of the article.
The second feature is the Laravel admin categories. When analyzing ready-made solutions, it was revealed that they are divided into two large groups: visual designers and generators, each of which has its own characteristics, which we will discuss later.
Another feature of the review is that, in addition to sorting packages by category, they will be arranged in descending order by the number of stars on Github, from where they were all, of course, installed.
And from here follows the last feature - all the solutions considered in this article are open source, i.e. free and open source. I decided not to pay attention to commercial products like BackPack.
Visual Designers Laravel admin panel
The main feature of this category of solutions for Laravel administrative panels is the maximum visualization of the workflow. They are very similar to those available out of the box in popular CMS: WordPress, OpenCart, Magento, etc.
You will not need to delve into the principles of code generation and its structure. Instead, visual designers provide a convenient UI for performing the necessary actions.
An ideal solution for those who need to make a Laravel admin panel in the shortest possible time and at the same time satisfy all the needs of customers (sometimes even the most perverse ones) who want to customize everything on their own, without additional costs for developers.
Laravel Voyager
Rating on Github: 5875 stars
Source code: https://github.com/the-control-group/voyager
Official website: https://laravelvoyager.com/
The installation is simple and consists of 3 steps: installing the package via Composer, creating an empty database, and installing the package data (dependencies, running migrations, etc.).
If you happen to be a user of Laravel 5.4 or earlier, then you will need to add a service provider to your Laravel application code. This requirement does not apply to new versions.
When installing package data, you can use the --with-dummy option to install the admin panel with a set of demo data (dummy data). They include 1 administrator account (if you didn't have users in the database in the user's table until now), 1 demo page, 4 posts, 2 categories and 7 settings.
After installation, this Laravel admin panel is available at site.url/admin, when you go to which you will see a slightly extravagant login form:
Course Library
laravel-voyager-admin-panel
Personally, I am not a fan of littering the site with various test information, which then will have to be deleted sooner or later anyway. Therefore, I installed the Laravel Voyager admin panel for myself without demo data.
As a result, after installing Laravel Voyager admin and logging in, I saw the following:
laravel-voyager-nastrojka
After that, I started setting up Laravel Voyager and studying its features.
Of the interesting features, we managed to find a menu builder with which you can collect various custom menus with arbitrary links for further use not only in the admin panel, but also on the site itself, as well as a media manager that provides a UI for uploading pictures, videos, and others to the site files and to manage them.
It also has a log viewer, a guide with a list of Artisan commands (most of which are standard for Laravel, so this is more of a short cheat sheet compiled from official documentation), and a list of element classes of the icon font used by the admin so that you can use it when customization of both the admin panel and the site (when connecting the admin CSS file, of course).
Frankly, the benefits of these "buns" are very doubtful. The first thing that came to my mind at the sight of all this beauty was “Schaub Bulo” 🙂You can find the listed functionality in the Compass menu item.
Voyager Laravel admin panel also has its own system of hooks, with the help of which it is possible to expand the functionality of the admin panel and the site with additional features. At the moment, there are not very many Voyager hooks, a complete list of which you can find here - https://larapack.io/.
Of the most interesting - WordPress import and the ability to conduct surveys on the site.
Well, the undoubted highlight of the Voyager Laravel admin panel is the presence of a database manager and BREAD builder, which allow you to have a simplified analog of phpMyAdmin right in the admin panel.
The database manager allows you to edit the structure of the database and tables, and BREAD builder is, in fact, an ordinary CRUD generator for filling database tables with data through the admin panel, but instead of the usual Create, Read, Update, Delete, the creators of Voyager decided for some reason to encrypt other actions: Browse, Read, Edit, Add, Delete.
Apparently, marketers and various brand makers are also on their team.🙂
I must say that the database manager built into the admin panel is a very useful thing, especially when customers do not give access to the database, but want to change its structure 🙂. Or they use shared hosting without SSH access, which makes it impossible to run Laravel migrations in the server console.
I myself have already encountered such a situation once, and the presence of the Voyager Laravel admin panel on the client’s website saved me a lot then.
Well, one more useful feature is the ability to translate the UI of the admin panel (a very useful feature if your customer wants a localized panel) and multilingual support for out-of-the-box entities.
Simply put, Voyager Laravel admin panel allows you to set values for various fields (product names, post texts) in different languages with the ability to quickly switch them.
The only thing I didn't like about Voyager is the documentation, which is available at this link - https://voyager.readme.io/docs.
Despite the fact that it is compiled very well, it does not describe all the points that arise when working with this Laravel admin panel. I had to read about the same multilingualism on GitHub - https://github.com/the-control-group/voyager/pull/561
In other matters, the developers themselves recognize this shortcoming by indicating the postscript still in development on the start screen of the docks .
Well, I didn’t like the fact that the authors of the Voyager Laravel admin panel turned on the marine theme of the admin panel, which may not be to everyone’s liking. So get ready for the fact that it may have to be customized at the request of the customer.
Well, in general, this panel is a fairly simple and powerful solution that has all the necessary functionality for implementing typical blogs, online stores, and other standard projects, allowing you to make some kind of WordPress out of any Laravel site.
Laravel QuickAdmin
Github rating: 438 stars
Source code: https://github.com/LaravelDaily/quickadmin
Official site: https://quickadminpanel.com/
Installing Laravel QuickAdmin was really fast (judging by the translation of the name), simple and straightforward.
The documentation is compiled in sufficient detail and describes all the main points that arise when working with the admin panel, from its installation to configuration - http://laraveldaily.com/packages/quickadmin/. True, it cannot be called exhaustive either.
When I logged into the admin panel after Voyager, I was personally a little disappointed. Outwardly, this Laravel admin panel looks quite primitive:
laravel-quickadmin-package-dashboard
What did I see from the possibilities?
- First, a CRUD entity generator is present. When creating a new entity, a table in the database is generated automatically. Fields can be added as many as you like, with different types. True, after creating a CRUD controller, you can neither delete it nor edit the fieldset. The only option is to delete and create again or do everything manually by manually writing to the database and model.
- Secondly, the manager of users and their roles are available by default (there is a regular user and an administrator who can create CRUD controllers).
- Thirdly, it is possible to add new elements to the admin menu with the ability to drag-and-drop their positioning with changing nesting levels.
laravel-quickadmin-package-menu-generator
True, menu items cannot be deleted, only manually through the database.
Unlike the Voyager admin panel, I liked the convenient customization of the code generated by the admin panel. All controllers and models are created in Laravel's default directories (app/Http/Controllers/ and app/, respectively). You don't need to look for them throughout the project.
Now about what I didn't like about Laravel QuickAdmin. First of all, these are future problems when adding multilingual entities to the site (unlike the already mentioned Laravel Voyager admin).
Problems are ensured by the fact that this Laravel admin panel does not provide such an opportunity out of the box.
I also didn’t like the lack of the ability to customize the front-end admin theme, which, as I said, is rather primitive by default, and with a high probability customers may not like it.
In addition to being open-source on GitHub, Laravel QuickAdmin also has a SaaS solution that starts at $100/year. In addition to setting up an admin panel in the cloud, tariff plans include installing modules specially designed for QuickAdmin Premium, supporting developers, and removing the QuickAdmin label from the panel.
You can find out more about prices and opportunities on the official website at the link at the beginning.
Laravel Admin Generators
The main difference between Laravel admin generators and visual designers is that the creation of CRUD controllers, new menu elements, and pages occurs not after clicking on UI elements, but in the console, or even after manually creating new classes and inheriting from those in the generator package.
A distinctive feature of generators is that many of them provide the ability to use Laravel CRUD generators and other builders separately, even placing them in separate repositories. The advantage of this approach is the ability to use your custom frontend admin theme.
Thanks to these features, these products are great for implementing large projects (and not only their admin panels), allowing you to reduce the time to develop the same type of classes and methods.
However, this circumstance imposes serious requirements on them regarding the purity and understandability of the code. If the CRUD classes are poorly structured, and the process of generating the Laravel admin panel is confusing, then the use of these products can, on the contrary, only increase the implementation time.
Z-Song Laravel admin
Rating on Github: 3201 stars
Source code: https://github.com/z-song/laravel-admin
Official site: http://laravel-admin.org/
The documentation for this product is perhaps the most complete of all those described earlier. It affects not only the banal installation and configuration processes but also touches on many subtleties and even code organization.
After logging into the admin panel, I immediately saw that it was developed based on the popular AdminLTE admin template:
laravel-admin-panel-generator-zsong
By default, in this Laravel admin panel, an editor of menus, users and their rights is available, which were added only to demonstrate the capabilities of the admin panel, i.e. how the entity editing forms created through it might look.
Adding new ones occurs exclusively in console mode.
The package provides a set of artisan commands for generating model controllers, model-grid (pages with a list of entities with the ability to customize its appearance), model-form (pages for editing attributes of a single entity), and routes to access all this.
All you need to do yourself is to create a database table (the easiest way is with Laravel migrations) and generate a model for it.
Excellent functionality without all sorts of frills that hurt the eyes, like, for example, Laravel QuickAdmin.
In general, this Laravel admin generator is really very cool and made a positive impression on me. No wonder thousands of Laravel developers use it, judging by the stars on GitHub🙂
InfyOm Laravel Generator
Rating on Github: 1817 stars
Source code: https://github.com/InfyOmLabs/laravel-generator
Official site: http://labs.infyom.com/laravelgenerator/
A fairly powerful Laravel package with the slogan "Get your API and admin panel in minutes", which the creators focus on, first of all, even API generation, and not on the admin panel.
This Laravel package includes as many as 3 generators, which can be used both as a set and one by one within one project:
API generator;
laravel admin panel generator;
API documentation Swagger generator.
Also, in addition to this toolkit, the package provides the ability to generate Laravel migrations with the structure of future tables in the database, as well as models and controllers for accessing stored values.
To tell the generator what data to use to create models and CRUD controllers, you can enter all the necessary information in the console or use a JSON file as a source. Generation is also possible based on existing database tables.
InfyOm Laravel Generator also allows you to create test data using Faker to test generated API methods.
The distinguishing feature of the package is that it generates code according to the Repository pattern.
class BookController extends AppBaseController
{
/** @var BookRepository */
private $bookRepository;
public function __construct(BookRepository $bookRepo)
{
$this->bookRepository = $bookRepo;
}
/**
* Display a listing of the Book.
*
* @param Request $request
* @return Response
*/
public function index(Request $request)
{
$this->bookRepository->pushCriteria(new RequestCriteria($request));
$books = $this->bookRepository->all();
return view('books.index')
->with('books', $books);
}
Another cool feature of this generator is that it allows you to use four types of graphic themes to design the admin interface: AdminLTE, Medtronic, Bootstrap, and FlatLab. You can even add your own theme if needed.
The only thing that I did not like when working with this admin panel was its easy intricacy. To install and run it with minimal settings, it personally took me 3 times more time than when using Z-Song Laravel Admin, for example.
To learn how to do this, as well as to install and configure the package as a whole, read the documentation on the official website. Its peculiarity is that it is organized according to the principle of the official Laravel documentation: you can choose the version of Laravel to read about the features of working with the admin panel generator that is relevant for the selected version of the engine.
Laravel Sleeping Owl Admin
Rating on Github: 486 + 496 (for the old version) = 982 stars
Source code: https://github.com/LaravelRUS/SleepingOwlAdmin
Official site: https://sleepingowladmin.ru
The old version with Laravel support up to version 5.1 inclusive is available here - https://github.com/sleeping-owl/admin
One of the most ancient admin panel generators, which even managed to change the repository in the history of its existence. The old version with Laravel support up to version 5.1 inclusive is available here - https://github.com/sleeping-owl/admin
And also Sleeping Owl Laravel admin generator is the first admin package that I had to work with.
It was about 2 years ago. I then came to work for a company that had a corporate website on Laravel 4.2. Since the company was taking its first steps, and there were few orders, I was instructed to take care of the support of this creation.
As one of the first tasks, it was necessary to fasten the admin panel so that it was possible to edit the portfolio and page content. At that time, I didn’t know Laravel at all, I was embarrassed to use my English, so it was decided to look for a finished product with Russian-language documentation.
Sleeping Owl Admin then ideally suited my requirements (I was especially pleased that this is a domestic product with an extensive dock and even articles on Habré from the creators ), after which I began to deal with it. To be honest, I coped with the task after a week of torment🙂
Despite the fact that, at first glance, the admin panel fit perfectly, it turned out to be extremely inconvenient to use (for me personally). There were a lot of manual actions, primarily due to the fact that the generator, in fact, is a set of classes that you need to use in your custom models and controllers. No Laravel CRUD generators, console commands for creating models, migrations and other things and does not smell🙂
Generator classes, however, have enough methods for all occasions. You can configure the texts of pop-up messages, set up object list column filters, set up form fields - and all in a single file, without searching for the necessary elements throughout the project code. But, on the other hand, this package structure imposes serious restrictions on the customization of standard components.
Another serious problem that Sleeping Owl Laravel Admin did not solve was the impossibility of organizing multilingual data stored in the database. In addition, I could not find answers to many questions in the official documentation, despite the fact that it is quite extensive - https://sleepingowladmin.ru/docs.
Since I have been using this Laravel package for quite some time, I decided to re-install it just to be sure, to see how much it has changed:
laravel-sleepingowl-admin-package