One of my fiscal year goals at work is to update our starter app. When I first started I was tasked with updating the existing app from Laravel 5.1 to 5.5. That was almost four years ago. At the time I was still pretty new to Laravel and hadn't known about some of the other dependencies out there that would make my job easier, dependencies such as Orchid, Backpack, Laravel permissions, Voyager, etc. Please note that this is not a how-to guide and therefore I'm not going to go through the process of installing and setup of each project.
Our applications are a lot of basic forms or a single advanced form and with very little, if any content. In situations for more advanced forms, the application needs to access our Data Warehouse that can require a lot of logic. With that said, aside from the standard roles and permissions feature we need a way to quickly and easily create validated forms. Here are the things I am looking for.
- Easy setup with as few extra dependencies as possible
- User roles and permissions
- WYSIWIG form builder & validation
- Free for educational use
- Builtin settings feature
- Automatic menu routing
- Built-in log parser
- Migration builder
- Users and Permissions Management
- Form Building
Backpack is a Laravel package for building secure areas for administrators. This will not turn your Laravel application into a full blown CMS just by adding it. It is simply adds the framework to allow you to easily create CRUD pages or panels. After installing, your application doesn't change much. All you get is an admin area with a generic dashboard page. In fact you don't even get any way of updating users, roles, or permissions. For that you have to install the permissionmanager package (
composer require backpack/permissionmanager). As mentioned before, adding Backpack to an existing project is as simple as requiring a single dependency and then running an artisan command to do some additional installation. Out of the box there is no interface to manage roles, permissions, view logs, manage backups, etc. However, there are a number of first party dependencies that you can add to provide you with the ability to manage users and groups. Additionally, there are other first-party dependencies that you can add such as settings, log viewer, file manager, and backup making it a very complete option.
Creating forms is pretty easy. By creating CRUD controllers you can define what database columns are exposed to the user and how they should be validated. Given the number of smaller forms that we do, this would make the task of creating forms less tedious and the more complex forms more bearable.
This tries to do what Backpack does but it does it in a way that's less elegant. After installing the dependency, it feels like you have two things to manage because Orchid doesn't really seem to integrate into Laravel. Instead it is another layer of code that you can use to build your application. The form builder is an improvement over the way that we are currently doing things, but at the end of the day it really doesn't provide much more than another way of creating an application, albeit marginally simpler.
Voyager claims to be the missing Laravel administrative panel for your Laravel application. At first glance it appears to be an add-on to turn your Laravel application into a CMS, it's purpose is only to to make it easier to manage data, not content. What this means is that it's essentially a web based DBMS with a more user friendly way of entering and viewing data. That doesn't mean that you can't use Voyager to create a CMS and as the Voyager website says "Laravel & Voyager are simply tools to make it easier to build."
When I first saw that Voyager has a built in database manager, I was excited but upon further investigation found that you have way more control over the tables if you use migrations. Any changes to the table, even creating a table, does not actually create a migration file. That might be alright for real basic things, but creating migration files aren't terrible and you have the added bonus of having way more control over what happens.
The form builder is more of a data entry form, which is called BREAD and is short for browse, read, edit, add, and delete. Additionally, you can set some basic usability information such as singular and plural names, slugs, and icon. The form is limited to only the fields in the table and adding a relationship doesn't include fields from other tables. The menus and permissions are pretty standard but overall, I was a bit confused as to what Voyager was actually trying to be. At times it felt like a CMS, while at other times a configurable web application or DBMS. A big problem that I found was that if you didn't enter the correct information such as entering in the wrong model when creating a BREAD, the entire application broke. Aside from looking and sounding nice, I wasn't able to find much benefit from Voyager.
Of the three "admin" panels I looked at, it seemed that there were only two actual admin panels and it seemed more of an evolution of admin panels. Orchid was the framework, Voyager tried but didn't provide much value in the end, and Backpack is the final evolution. Of the three I looked at, Backpack offers the best value in terms of development time.