acacha/admin-lte-template-laravel
AdminLTE template for Laravel: a ready-made admin panel scaffold that pairs the AdminLTE theme with Laravel authentication, user management, and Blade layouts. Ships with login and registration views, a responsive sidebar, and sensible defaults so you can build polished dashboards and CRUD interface...
Prerequisites. This package is a scaffolding layer, not a runtime UI kit. It expects a Laravel app that already has authentication views/routes (make:auth on Laravel ≤5.8, or laravel/ui + php artisan ui bootstrap --auth on 6.x–8.x). It ships AdminLTE 2.x, which means Bootstrap 3, jQuery, and Font Awesome 4 — not the Bootstrap 5 stack in a fresh Laravel 9+ skeleton. Confirm your Laravel/PHP versions match the package constraint before installing.
Install sequence.
composer require acacha/admin-lte-template-laravel
php artisan adminlte:install # publishes views, assets, config
php artisan list adminlte # confirm command name/flags for your pinned version
Then clear caches and log in:
php artisan config:clear && php artisan view:clear
php artisan serve
Where to look first.
php artisan adminlte:install --help — flags like --force, --symlink, and any selective install options determine whether you get copies or links.config/adminlte.php or config/laravel-adminlte.php) — app name, logo, skin, menu entries, and layout paths.resources/views/ — the installer replaces/creates layouts/app.blade.php, home.blade.php, and the auth/* views. This is where you will spend most of your time.public/vendor/... (or public/adminlte) — the compiled AdminLTE CSS/JS/plugins.First use case. Point a dashboard route at the new home view, add one sidebar link, and verify the active-state highlight works:
Route::middleware('auth')->get('/dashboard', fn () => view('home'))->name('dashboard');
Once that renders inside the AdminLTE shell with a working sidebar and logout, the scaffolding is proven and you can build on it.
Own the views after install. This package copies Blade files into your app rather than rendering them from the vendor directory. Treat resources/views/layouts/app.blade.php as application code: split it into partials (layouts/partials/sidebar, navbar, footer) so future re-installs don't force a three-way merge in one giant file.
Menu as data, not markup. Drive the sidebar from the config file or a small array in a view composer, then render with a loop. Active state should be route-based, not hardcoded:
<li class="{{ request()->routeIs('users.*') ? 'active' : '' }}">
<a href="{{ route('users.index') }}"><i class="fa fa-users"></i> <span>Users</span></a>
</li>
Config-driven entries mean per-environment or per-role menus without editing Blade.
Group admin routes explicitly. Use a dedicated route file or prefix group with ['middleware' => ['auth'], 'prefix' => 'admin', 'as' => 'admin.']. The installer's /home route is a starting point, not an architecture — replace it with your own dashboard route so the package's scaffold doesn't collide with domain routes later.
CRUD workflow. Generate the backend with standard Artisan (make:model -mcr, form requests), then copy the closest AdminLTE view (usually home or a user list) as the template. AdminLTE 2 bundles DataTables, iCheck, and date pickers; wire them through the layout's @stack('scripts') rather than adding <script> tags per view.
Branding via config, not search-and-replace. App name, logo path, skin class (skin-blue, skin-purple), and layout options belong in the published config so config:cache in production picks them up. Reference them in Blade with config('adminlte.skin').
Auth/profile screens are the real payoff. Registration, login, password reset, and the user profile page come pre-styled. If you need extra profile fields, migrate the users table and extend the profile view — don't fork the auth controllers unless you must; the default Auth\* controllers are thin enough to leave alone.
Front-end build decision. Either commit the published assets in public/ and never touch them, or pull AdminLTE's sources into your Mix/Vite pipeline. Do not do both — mixed ownership is the most common source of "my CSS change doesn't appear" bugs.
asset() or mix() paths. Budget a rewrite of the <head>/footer includes if you move to Vite.--force destroys your edits. Commit before re-running the installer, and keep customizations in separate partials or a child layout so a re-install touches as few files as possible.make:auth no longer exists on Laravel 6+. Install laravel/ui, run php artisan ui bootstrap --auth, and only then run the AdminLTE installer. Skipping this produces missing-view errors that look like package bugs.--symlink fails or public/vendor is empty after deploy, re-run the installer in copy mode or add the publish step to your deploy script.php artisan config:clear after touching the AdminLTE config; .env values override config-file defaults in most of the package's settings.home route and any Auth::routes() call can shadow your own. Run php artisan route:list and check ordering after install.resources/views/vendor/<namespace> exists from a prior install, published overrides may be resolved from the wrong path. Delete stale directories when upgrading.auth (plus role checks), since the scaffold's default middleware won't know about your authorization model.<head>, confirm public/vendor is populated, check the browser console for 404s on adminlte.css/app.js, and verify APP_URL so asset() generates correct hosts behind a proxy.php artisan vendor:publish --provider="Acacha\AdminLTETemplateLaravel\...", the service provider for adding view composers, and the config file for menu/skin options. Prefer these over editing vendor code.How can I help you explore Laravel packages today?