Open-source project
LaravelRUS/SleepingOwlAdmin avatar
LaravelRUS/SleepingOwlAdmin

SleepingOwl Admin: an admin panel builder for existing Laravel applications

🦉 Administrative interface builder for Laravel (Laravel admin)

806 stars213 forksPHPMIT

At a glance

What is it?
SleepingOwl Admin is an MIT licensed package that gives an existing Laravel application an internal back office, installed through Composer and wired to Laravel's own authentication. The judgement is that it is a mature choice for Laravel 10 projects, and a constrained one for anything older, on Lumen, or on a front end newer than Vue 2.
Who is it for?
SleepingOwl Admin fits a team that already runs a Laravel 9 or 10 application and needs a back office without hand writing every CRUD screen and permission check, because the package supplies the panel, the Mix asset pipeline and the middleware wiring for Laravel authentication.
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 43 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 October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A panel builder for the back office your Laravel app already needs

SleepingOwl Admin is an administrative interface builder for Laravel, distributed as a Composer package named laravelrus/sleepingowl and released under the MIT License. It is not a standalone admin application you deploy on its own. You add it to a Laravel application that already exists, and it gives that application an internal panel for managing data through the browser.

The repository layout says a lot about the shape of the thing. There is a src/ directory holding the PHP side, a config/ directory for the package configuration, a resources/ directory and a public/ directory for the front end, and a tests/ directory with a phpunit.xml at the root. There is also a webpack.mix.js file and a package.json, which means the interface is compiled as part of the package rather than shipped as a prebuilt bundle.

The audience is therefore a development team that has a working Laravel application and a second audience that is a set of internal users who need screens to look at and change records. The package handles the second audience, the panel itself, while the first audience keeps ownership of the models, the routes and the database.

The Laravel and PHP version table is the contract to read first

The support matrix is the most consequential thing in the documentation, because the package pins a PHP floor for every Laravel line it covers. Laravel 5.5 to 5.8 needs PHP below 7.1.3, Laravel 6 needs PHP 7.2 or newer, Laravel 7 needs 7.2.5, Laravel 8 needs 7.3, Laravel 9 needs 8.0, and Laravel 10 needs PHP 8.1 or newer.

There is a warning at the top of the same document: starting from the next major release, SleepingOwl Admin will support Laravel 9 and above only, and support for Laravel 8 and below will be dropped to align with modern PHP, 8.1 and later, and current Laravel standards. That is a policy decision with a deadline attached, and it lands on any application that has not already moved to Laravel 9.

Two other constraints belong next to it. Lumen is not supported, so the package cannot be used in a Lumen micro application. The working combination given is Laravel version 10.48 with PHP 8.3. The release list lines up with that policy: version 9.5.1 on 2022-03-18 covers Laravel 8.70 and less, version 10 on 2025-04-12 covers Laravel 10 and less, from 5.5 up to 10.48.29, and version 10.48.29 on 2025-07-10 is the final release for Laravel 10. The last push was on 2026-09-10 and the repository is not archived.

Composer plus two artisan commands gets you a running panel

Installation is a Composer requirement plus an artisan command, and the documentation gives both. For the 8 line release the package is required with a version constraint:

bash
composer require laravelrus/sleepingowl:8.*
composer update laravelrus/sleepingowl

The second command is the one used when an older install is being upgraded, after the constraint in composer.json is changed to "laravelrus/sleepingowl": "^7.*". After the requirement lands, the assets have to be refreshed and the package installed, and both are artisan commands:

bash
php artisan sleepingowl:update
php artisan sleepingowl:install

The update command handles the assets when you move from an older version, and the install command performs the initial setup of the package in the application. The same page links to an installation reference on sleepingowladmin.ru, which is worth opening before running anything, because the English version of that documentation is only marked as thirty percent complete.

Note what is not in the flow. There is no separate vendor directory to clone and no environment variable to set, because the package follows the normal Laravel service provider pattern and reads its own configuration from a config file inside the application.

Authentication stays inside Laravel, configured in config/sleeping_owl.php

The admin module uses Laravel authentication by default, which means it does not carry its own user table or its own login screen. To route it through Laravel's authentication, the application is expected to have the auth scaffolding, and the middleware list in config/sleeping_owl.php is what actually decides who gets in:

php
...
'middleware' => ['web', 'auth']
...

The guard used by that middleware comes from the application configuration, where the default guard is set in config/auth.php:

php
'defaults' => [
    'guard' => 'web', <- default
    ...
],

The same configuration point accepts role and permission middleware, which is the documented way to use an access control package without writing a guard of your own:

php
'middleware' => ['web', 'role:admin'],

and the permission form:

php
'middleware' => ['web', 'permission:admin'],

That design has a practical consequence. The panel inherits whatever session handling, guard and password rules the Laravel application already has, so an application that uses a custom guard or an external identity provider has to align that first, because the package reads the standard middleware stack rather than talking to an identity source of its own.

The interface is Vue 2 on AdminLTE, compiled by Laravel Mix

The front end is a JavaScript bundle built with Laravel Mix, and package.json shows the shape of it. The scripts are thin wrappers around mix: development and dev run mix, watch runs mix watch, watch-poll runs mix watch with a polling option, hot runs mix watch with hot reload, and production and prod run mix in production mode. A team that wants to modify the panel theme therefore needs the Node toolchain, not just PHP.

The dependency list is long and tells you which interaction patterns the panel supports. AdminLTE 3.2 and Bootstrap 4.6.2 provide the layout, jQuery 3.7.1 and axios 1.11 handle requests, Vue 2.7.16 and vue-template-compiler provide the component layer, and DataTables with its Bootstrap and responsive variants drive the listing screens. Form work is covered by select2 for selects, vue-multiselect for tagging, dependent-dropdown for linked fields, dropzone and flow.js for uploads, sweetalert2 and noty for messages, nestable2 and sortablejs for ordering, x-editable-bs4 for inline edits, trix for rich text, and moment with bootstrap4-datetimepicker and tempusdominus-core for dates. i18next and i18n cover translation, magnific-popup and lazyload cover overlays and deferred images.

The consequence is that this is a dated but coherent stack. The assets assume Vue 2 and Bootstrap 4 rather than the current major versions of either.

English documentation coverage is the weak spot

The documentation story is uneven, and any team outside the Russian speaking part of the community should know that before adopting the package. The official site sleepingowladmin.ru carries the version 10 documentation, which covers Laravel 5.5 through 10 with 10.48.2 given as the latest tested version. The Russian version of that documentation is marked as ninety percent complete, while the English version is marked as thirty percent complete.

A separate documentation repository exists at SleepingOwlAdmin/docs on a new branch, so the English text is worked on outside the main repository rather than inside it. There is also a demo site at demo.sleepingowladmin.ru, which is the fastest way to see what the panel looks like before deciding, and a Telegram chat linked from the same badge row as the official site and the demo.

The practical reading is that the code and the configuration are the primary source of truth here, and the prose documentation is a supplement. Configuration questions in particular are settled by reading config/sleeping_owl.php in the installed package rather than by reading the manual.

Where this package stops, and what the alternative looks like

The limits are stated rather than implied. Lumen is out of scope. Laravel 8 and below are on the way out at the next major release, so an application that cannot move to PHP 8.1 has a deadline rather than an option. The front end is pinned to Vue 2.7.16 and Bootstrap 4.6.2, so a house style built on newer majors will not merge cleanly with the packaged assets. And the English documentation is a third of the way there.

The alternative is to build the back office inside the Laravel application yourself, with ordinary routes, controllers and Blade views, and to hand it the same AdminLTE, Bootstrap and DataTables assets the package would have given you. The difference in approach is where the CRUD logic lives. SleepingOwl Admin moves that logic into the package and leaves you with a configuration file, a middleware list and a set of compiled assets, while the hand written route keeps every screen in your own controllers and your own templates, at the cost of writing them.

Maintenance information sits in the same repository. CHANGELOG.md records the release history, TODO.md tracks the open work, phpunit.xml and tests/ cover the package side, and the CI and style badges point at a Travis configuration and StyleCI. The MIT License covers the code, so there is no licensing obstacle to embedding the panel in a commercial application.

Editorial conclusion

SleepingOwl Admin fits a team that already runs a Laravel 9 or 10 application and needs a back office without hand writing every CRUD screen and permission check, because the package supplies the panel, the Mix asset pipeline and the middleware wiring for Laravel authentication. It is the wrong choice for Lumen, for a Laravel application pinned to version 8 or below, or for a project that wants Vue 3 and Bootstrap 5, since the dependency list still names Vue 2.7.16 and Bootstrap 4.6.2. Before you install, check that your PHP version satisfies the requirement listed for your Laravel release, read the English installation page on sleepingowladmin.ru, and confirm that the release you pin still matches the Laravel version your application runs on.

Frequently asked questions

Which Laravel versions does SleepingOwl Admin support?

The support list covers Laravel 5.5 through 10, with a PHP floor per line: 7.2 for Laravel 6, 7.3 for Laravel 8, 8.0 for Laravel 9 and 8.1 for Laravel 10. Starting from the next major release the package will support Laravel 9 and above only.

How do I install SleepingOwl Admin in a Laravel application?

Require the Composer package with a version constraint such as composer require laravelrus/sleepingowl:8.*, then run php artisan sleepingowl:install. When upgrading an older installation, change the constraint in composer.json, run composer update laravelrus/sleepingowl and then php artisan sleepingowl:update to refresh the assets.

How does SleepingOwl Admin handle authentication and permissions?

The admin module uses Laravel authentication, and access is controlled through the middleware list in config/sleeping_owl.php. The documented forms are 'web' plus 'auth', or 'web' with a role or permission middleware such as 'role:admin' and 'permission:admin'.

Can SleepingOwl Admin be used with Lumen?

No. Lumen is explicitly not supported by the package, so it can only be used inside a full Laravel application.

Official sources

  1. Issues
  2. LaravelRUS/SleepingOwlAdmin on GitHub
  3. License: MIT
  4. README
  5. Releases
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/laravelrus-sleepingowladmin.svg)](https://hysenlabs.com/projects/laravelrus-sleepingowladmin)

Was this useful?