laravel-admin: the installer leaves you an admin login
Build a full-featured administrative interface in ten minutes
At a glance
- What is it?
- laravel-admin builds a CRUD admin panel for Laravel from a config array, a publish step, and one install command. The flow is short because it assumes you will do three things it never asks you to do: change the default credential, match a Laravel 5.5 era stack, and keep your edits out of the vendor directory.
- Who is it for?
- laravel-admin fits teams that want a database browser on an internal Laravel application and are willing to own the credential, the version line, and the vendor directory. It does not fit a new project on a modern Laravel major, because the documented path targets Laravel 5.5 and the newest tagged release is v1.8.19 from 2022-05-24 even though commits reached master on 2026-05-02.
- 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?
- Activity is slowing. The repository last received commits 6 months 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 November 14, 2026, and from our analysis. They are not legal advice.
Star history
- z-song/laravel-admin11,132 ★ · -3
| Repository | 2026-09-22 | 2026-11-14 |
|---|---|---|
| z-song/laravel-admin | 11.1k | 11.1k |
-3 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The install flow ends at a login anyone can guess
The last step of setup is one command.
php artisan admin:installThe instruction that follows it is to open `http://localhost/admin/` in a browser and log in with username `admin` and password `admin`. Those are the credentials the installer leaves in place, and nothing between the command and the login step asks you to change them. The install directory is a value in `config/admin.php`, so leaving it at the default puts the panel on the most guessable path it can occupy, behind the most guessable pair of credentials it can have.
The consequences are worth ordering by how long they stay true. A staging environment reachable from outside your network is an open door until somebody edits that account. An internal network is not a control, because the panel is a CRUD backend over your data and the same config file exposes the database connection as one of the settings you are expected to adjust. And if the installer runs inside a container image that gets rebuilt from a Dockerfile, the default account comes back with every build unless it is changed at the source rather than in the running container. Treat changing it as a manual task.
The requirements floor is Laravel 5.5 and PHP 7
The stated requirements are PHP >= 7.0.0, Laravel >= 5.5.0, and the Fileinfo PHP extension. Read as constraints those are floors rather than ceilings, so a newer interpreter and a newer framework both satisfy them on paper. The installation text, however, is written for one specific stack: it says to install Laravel 5.5 first and make sure the database connection settings are correct. A requirement listed in the README and a target version in the prose are different claims.
What that leaves you with is a gap rather than a wall. The installation note points to the 1.4 documentation for old versions, which tells you the project keeps version-specific documentation but not which version matches your framework. The Fileinfo extension is its own trap: slim PHP images frequently ship without it, and the failure then arrives during install, where it reads like an application bug rather than a missing extension. Before you plan the work, resolve the constraints on your real stack and see whether composer agrees, because the prose will not warn you.
The right-to-left change is made inside vendor and composer overwrites it
Right-to-left support is not a setting. The instruction is to open `<YOUR_PROJECT_PATH>\vendor\encore\laravel-admin\src\Traits\HasAssets.php` and modify the `$baseCss` array, swapping bootstrap.min.css for bootstrap.rtl.min.css and AdminLTE.min.css for AdminLTE.rtl.min.css. The path is written with Windows separators and points into the dependency directory rather than into your own source tree.
That location is the whole problem. vendor/ is regenerated by composer on every install and update, so the edit disappears the next time anyone touches composer.json, runs `composer install` in CI, or rebuilds a container. The file itself is a trait, which means the change is to shared asset-loading logic rather than to a stylesheet you can override from your own theme.
So the feature works exactly once and then silently reverts. If your interface has to render right-to-left permanently, you need a mechanism beyond the edit the README describes: a patch applied after each composer run, a fork you control, or an asset override in your own resources directory. Any of those is your code to maintain, so plan for that before you promise an RTL interface to anyone.
Install directory, connection, and table names all live in one published file
Assets and configuration reach your project through a publish command naming the service provider.
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"That produces `config/admin.php`, and the page names three things you can change there: the install directory, the database connection, and table names. Each one has consequences that are not stated anywhere. The install directory is what determines the address of the panel, so changing it also changes the login URL and any link anyone has bookmarked. The database connection decides where the admin's own tables live, so pointing it at a read replica or a reporting connection moves writes off the primary without failing loudly at install time. The table names setting is what lets two installs share one database, and it is also what collides if you forget it.
The reason this file matters so much is that the documentation gives you no other map. The configurations section consists of one sentence saying the file holds an array of configurations whose defaults you can find there. No key name is given, so the panel cannot be configured from this page. The repository does contain a config/ directory, and the external docs site is linked from the top, but either way you are reading source rather than a reference, and you should read it before the installer runs, not after.
Commits reach master but no tag has been cut since May 2022
The two timelines disagree. Commits have landed on master as recently as 2026-05-02, while the newest tags are v1.8.19 from 2022-05-24, v1.8.18 from 2022-05-20, and a second 1.8.18 tag from 2022-03-16. There is work on the default branch and nothing released from it.
For a composer consumer that split matters more than it first appears. Requiring `encore/laravel-admin` resolves to a tagged release, so you install 1.8.19 code while master moves independently. Anything committed since that tag reaches you only if you depend on the development branch, which is a different stability contract from a tagged version and which nobody has vouched for with a version number. It also means version numbers and reality drift apart: the tags say 1.x while the installation prose still describes Laravel 5.5, so the release number tells you less about the intended target than the requirements list does.
Two habits follow. Pin the exact version instead of a caret if you need reproducible installs, so a surprise bump cannot change your panel between deploys. And read CHANGELOG.md, which sits at the top of the repository, before and after any version change, because the gap between master and the newest tag means the changelog is the only place that shows you what has actually landed.
The extension table gives version floors, not verified combinations
The extensions carry a laravel-admin column, and it is easy to read too much into it. Nine entries are marked ~1.5: helpers, media-manager, api-tester, scheduling, redis-manager, backup, log-viewer, config, and reporter. A longer group is marked ~1.6, including wangEditor, summernote, simplemde, phpinfo, star-rating, json-editor, daterangepicker, material-ui, sparkline, chartjs, echarts, cropper, composer-viewer, data-table, watermark, and the code-mirror based editors for PHP, Python, JavaScript, CSS, and C-like files.
Under composer's tilde rule both ranges permit any later 1.x release, so an install on 1.8 satisfies both columns without complaint. That is the problem: the column records where an extension was written, not whether it was retested against the library version you have. Each one is a separate repository with its own release history, so a constraint that passes tells you nothing about whether a grid column still renders or an editor still saves after the panel moved forward.
The descriptions also separate the extensions by how much they can reach. media-manager provides a web interface to manage local files, scheduling is a scheduling task manager, backup is an admin interface for managing backups, redis-manager and config reach the server's Redis and configuration, and phpinfo integrates the interpreter's phpinfo page into the panel. Those are capabilities inside your admin, installed from elsewhere, and enabling one is a decision about who holds the panel's login.
The README config section is one sentence, so the reference lives elsewhere
Everything beyond installation is delegated. The page links a documentation site, a Chinese-language version of the same site, a hosted demo at demo.laravel-admin.org along with that demo's source code, and the extensions table. The repository itself carries a docs/ directory, a CHANGELOG.md, a CONTRIBUTING.md, a FUNDING.yml, a phpunit.xml.dist, and tests/. None of that is described here.
Two details cause friction for newcomers. The composer package is `encore/laravel-admin` while the repository is z-song/laravel-admin, so searching for one does not obviously surface the other, and the package name is what goes in your require line. Continuous integration is wired to Travis, with a .travis.yml at the top of the tree and a badge pointing at travis-ci.org, which is a different provider from the GitHub Actions setups many teams now standardize on.
The practical consequence is that this page gets you as far as a running panel; settings beyond installation live in the published config file and the external documentation.
Editorial conclusion
laravel-admin fits teams that want a database browser on an internal Laravel application and are willing to own the credential, the version line, and the vendor directory. It does not fit a new project on a modern Laravel major, because the documented path targets Laravel 5.5 and the newest tagged release is v1.8.19 from 2022-05-24 even though commits reached master on 2026-05-02. Before installing, check the Laravel and PHP versions against the stated requirements, plan to change the admin account, and read config/admin.php in the published file rather than relying on the README, whose Configurations section names no configuration key.
Frequently asked questions
how to access laravel admin panel
After php artisan admin:install, open http://localhost/admin/ in a browser and log in with username admin and password admin. The address itself comes from the install directory setting in config/admin.php, so changing that value changes where the panel lives.
What is the best admin panel for Laravel?
The README does not compare laravel-admin against other admin panels. It describes the package as an administrative interface builder for Laravel that produces CRUD backends with a few lines of code, and credits SleepingOwlAdmin and rapyd-laravel as its inspirations.
What is Laravel and why is it used?
On the question of Laravel itself this page says nothing beyond naming the framework as its target: laravel-admin requires Laravel >= 5.5.0 alongside PHP >= 7.0.0 and the Fileinfo PHP extension, and its installation instructions begin with installing Laravel 5.5.
Official sources
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.
[](https://hysenlabs.com/projects/z-song-laravel-admin)Star history chart for your README
[](https://hysenlabs.com/projects/z-song-laravel-admin)Was this useful?