QuickAdminPanel: Vue.js+Laravel Version

In August 2020, we released a new separate QuickAdminPanel version that generates Vue.js + Laravel API code.

circle-info

Notice: this version is available only for the Yearly Plan customers.

Compared to the "classic" generator version with jQuery Datatables, this Vue+Laravel code is totally different.

It's a SPA with a front-end-first approach, where most of the logic is inside Vue, using Vue Components, Vue Router, Vuex. Laravel serves only as an API layer, powered by Laravel Sanctum authentication.

Here are a few screenshots of a simple adminpanel, fully generated without writing a single line of code.

Login form page
Simple Datatable Example
Simple Form Example

For the design, we're using a Material Dashboard theme by Creative Timarrow-up-right, based on Bootstrap 4.

Structure of Generated Vue.js Code

As mentioned above, most of the logic of generated panel is inside of Vue.js SPA application.

That said, the public non-auth part of the website is simple Laravel + Blade, without Vue.js at all, the SPA behavior starts only when you log into the panel.

So, inside of the main Blade file resources/views/layouts/admin/app.blade.php you will find this line:

And from there, everything happens with Vue, in the folder resources/adminapp/js

Here's the code of the main resources/adminapp/js/app.js:

Then, all the generated CRUDs are registered as Routes, in resources/adminapp/js/routes/routes.js:

For every CRUD, we generate a set of Vue.js components, in the folder resources/adminapp/js/components/[CRUD Folder].

Here's an example of the list page of Transactions CRUD, in resources/adminapp/js/components/Transactions/Index.vue:

For the Datatables, we're using the Vue2-Datatable package, which we forked under our own LaravelDaily namearrow-up-right, to be able to have more control or fixes if needed.

You can see the contents of all other Vue files by checking out the demo repositoryarrow-up-right.

Laravel API Structure

On the back-end, in Laravel, we generate the API routes and Controllers.

Here's the example routes/api.php:

And here's an example API Controller, in app/Http/Controllers/Api/V1/Admin/TransactionsApiController.php:

We also generate Laravel API Resourcesarrow-up-right, so it would be easier to customize in the future, but they contain mostly default Laravel code. Example from app/Http/Resources/Admin/TransactionResource.php:

As mentioned above, Authorization is powered by Laravel Sanctumarrow-up-right, and for Roles and Permissions on the front-end, we use CASL Vue packagearrow-up-right, see video demo below:

You can look at the full code of this example adminpanel in this public repositoryarrow-up-right.

Last updated