Open-source project
z-song/laravel-admin avatar
z-song/laravel-admin

z-song/laravel-admin: a CRUD admin builder for Laravel

Build a full-featured administrative interface in ten minutes

11,136 stars2,804 forksPHPMIT

At a glance

What is it?
laravel-admin generates CRUD backends from a few lines of PHP, installs through Composer, and ships a Model-Grid/Model-Form API. It is also pinned to PHP 7+ and Laravel 5.5+, and its latest tagged release is v1.8.19 from 2022-05-24.
Who is it for?
Adopt laravel-admin if you have a PHP 7 or Laravel 5.5-era application and want a working CRUD backend without writing Blade views by hand. Do not adopt it if you are starting on a current Laravel release, since the README states the package requires Laravel >= 5.5.0 and PHP >= 7.0.0, and the newest tagged release, v1.8.19, dates from 2022-05-24.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 151 days ago.
What is it written in?
Mainly PHP, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What laravel-admin actually builds

laravel-admin is a package that generates an administrative interface inside an existing Laravel application. The README describes it as "administrative interface builder for laravel which can help you build CRUD backends just with few lines of code", and the repository topics name the four building blocks directly: model-form, model-grid, model-show and model-tree. Those are the abstractions a developer writes against. Instead of hand-writing Blade templates, routes and controllers for every table, you describe a grid (the list view with filters and columns) and a form (the create and edit view) in PHP classes, and the package renders the pages.

The audience is narrow and specific. This is for teams already running a Laravel application who need an internal back office: user management, content moderation, order tables, configuration screens. It is not a standalone product you install on a server by itself, and it is not a CMS. If your application is not Laravel, or if you are not willing to add a Composer dependency to the app, laravel-admin has nothing to offer you. The README's own framing, "build a full-featured administrative interface in ten minutes", sets the expectation: the value is speed on a project that already exists.

The repository layout supports that reading. There is a src/ directory for the package code, a config/ directory for the publishable configuration, database/ for migrations, resources/ for views and assets, and docs/. That is the shape of a Laravel package, not an application.

Model-Grid, Model-Form and the data flow they imply

The mechanism is convention over configuration applied to Eloquent models. A grid class declares columns and filters; a form class declares fields and validation. The package maps those declarations onto the underlying model, so a column named for a database field renders without further instruction, and a form field writes back to the same attribute. The topics list confirms the four surfaces: model-grid for listing, model-form for editing, model-show for detail pages, model-tree for hierarchical data such as categories.

What this means in practice is that the data flow is one-directional and predictable: HTTP request, grid or form definition, Eloquent query, rendered view. There is no separate API layer and no front-end framework in the loop. The package serves server-rendered pages from within your Laravel app, which is why installation is a Composer require plus an artisan command rather than a deployment of its own service. It also means the admin panel shares your application's database connection and configuration, which the README makes explicit: config/admin.php is where you change "the install directory, db connection or table names".

The trade-off is that anything the grid and form abstractions do not cover has to be written as custom code inside the Laravel app. The extension table in the README is evidence of that boundary: media-manager, log-viewer, config, backup, redis-manager and others exist as separate packages because the core does not include them. If your admin needs a file browser or a log viewer, you are adding another dependency, not enabling a setting.

Installing laravel-admin and logging in for the first time

The README lists three requirements before anything else: PHP >= 7.0.0, Laravel >= 5.5.0, and the Fileinfo PHP extension. The install assumes a Laravel 5.5 application with working database connection settings. If you are on an older Laravel, the README points to the 1.4 documentation rather than describing a supported path.

The first step pulls the package from Packagist under the name encore/laravel-admin:

bash
composer require encore/laravel-admin

The second step publishes the package assets and configuration. According to the README, after this command you will find a config file at config/admin.php, and that file is where the install directory, database connection and table names can be changed:

bash
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"

The third command finishes the installation, which in a Laravel package of this kind means running the migrations and creating the admin tables:

bash
php artisan admin:install

After that, the README says to open http://localhost/admin/ in a browser and log in with the username admin and the password admin. That default credential pair is the first thing to change on any deployment that is reachable from outside a development machine. The README does not describe a password reset flow, an artisan command for changing the default account, or a forced password change on first login. Treat the default as a known starting state that you must replace yourself.

Where laravel-admin stops being the right tool

The hard constraint is the version floor. PHP >= 7.0.0 and Laravel >= 5.5.0 are stated as requirements, and the newest tagged release in the repository is v1.8.19, published on 2022-05-24, with v1.8.18 before it on 2022-05-20 and 1.8.18 on 2022-03-16. The last push to the default branch was on 2026-05-02, so the repository is not archived and commits continue, but the release history is the more useful signal for anyone planning an upgrade path: there has been no new tagged version in years. A team building a new Laravel application on a current release should verify compatibility before assuming this package installs cleanly, and the README does not offer a compatibility matrix beyond the minimum versions.

The second limitation is configuration depth. The right-to-left support instructions in the README ask you to edit a file inside vendor/encore/laravel-admin/src/Traits/HasAssets.php and change entries in the $baseCss array, swapping bootstrap.min.css for bootstrap.rtl.min.css and AdminLTE.min.css for AdminLTE.rtl.min.css. Editing files under vendor/ is a real maintenance cost: a Composer update overwrites them. The README presents this as the supported method, which tells you the package does not expose RTL as a published configuration option. Any project that needs RTL and updates dependencies regularly should weigh that.

Third, the extension ecosystem is a separate surface with its own version constraints. The README's extension table lists most entries as compatible with ~1.5 or ~1.6 of laravel-admin, not with the current 1.8 line. Installing a media manager or a log viewer therefore means checking that extension's own compatibility, not just the core package's.

laravel-admin compared with Filament and Nova

The two names that come up in the same searches are Filament and Laravel Nova, and the difference is architectural rather than cosmetic. laravel-admin renders server-side pages from PHP class definitions, with no JavaScript framework in the request path. That is why the install is a Composer require and an artisan command, and why the whole thing runs inside the Laravel app's own process.

Nova is a first-party Laravel product with its own licensing model. It is not installed the same way and is not free in the sense that laravel-admin is. The repository states the licence as MIT, which is the practical difference for a team that cannot budget for a per-project licence or does not want a vendor relationship attached to its admin panel.

Filament is the closer comparison in spirit: a Laravel package that generates admin resources from declarative classes. The distinction worth checking before choosing is the front-end stack and the Laravel version each targets. laravel-admin's stated floor is Laravel 5.5, which is a 2017 release line; a team on a modern Laravel version will want to confirm what Filament requires before treating the two as interchangeable. The README does not compare itself to either project, so this is a judgement you make from the version requirements, not from anything the package claims.

Licence, extension surface and upgrade cost

The repository is MIT licensed. In practice that means you can use it in commercial and closed-source applications, modify it, and redistribute it, provided the licence notice is preserved. This is not legal advice; read the LICENSE file in the repository and your own counsel's guidance if the admin panel sits inside a product you ship.

Upgrade cost has two parts. The core package moves through Composer, and the release history shows the 1.8 line reaching v1.8.19 in May 2022. The extension packages move independently, and the README's table pins most of them to ~1.5 or ~1.6, so a core upgrade can leave extensions behind. Budget for checking each extension you rely on.

The other cost is the vendor/ edit for RTL, described above. If you need that, plan for a patch step after every dependency update rather than a one-time change. The README does not document a supported alternative to editing that file.

Editorial conclusion

Adopt laravel-admin if you have a PHP 7 or Laravel 5.5-era application and want a working CRUD backend without writing Blade views by hand. Do not adopt it if you are starting on a current Laravel release, since the README states the package requires Laravel >= 5.5.0 and PHP >= 7.0.0, and the newest tagged release, v1.8.19, dates from 2022-05-24. Before committing, check that the Fileinfo extension is enabled on the target server, and read config/admin.php after vendor:publish to confirm the install directory and database connection match your environment. Also confirm whether your Laravel version is covered, because the README points older versions to the 1.4 docs rather than promising support.

Frequently asked questions

How do I access the laravel-admin panel after installing it?

The README says to open http://localhost/admin/ in a browser after running php artisan admin:install, then log in with the username admin and password admin. The install directory can be changed in config/admin.php, so the path may differ if you edited that file.

What are the requirements for installing z-song/laravel-admin?

The README lists PHP >= 7.0.0, Laravel >= 5.5.0 and the Fileinfo PHP extension. It also notes that older versions are covered by the 1.4 documentation rather than the current install steps.

Is z-song/laravel-admin free to use?

The repository states the licence as MIT, which permits commercial and closed-source use as long as the licence notice is preserved. The README also links to Open Collective backers and a PayPal donation page, which are optional support channels, not a paid tier.

How do I change the database connection or table names used by z-song/laravel-admin?

Run php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider" and then edit config/admin.php. The README states that this file is where you change the install directory, database connection or table names.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. z-song/laravel-admin on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/z-song-laravel-admin.svg)](https://hysenlabs.com/projects/z-song-laravel-admin)