laravel-livewire-panel maintained by alp-develop
Laravel Livewire Panel
A complete admin panel framework for Laravel + Livewire. Supports Bootstrap 4, Bootstrap 5, and Tailwind CSS. Compatible with Livewire 3 and Livewire 4.
Requirements
| Requirement | Version |
|---|---|
| PHP | 8.1 / 8.2 / 8.3 / 8.4 / 8.5 |
| Laravel | 10 / 11 / 12 / 13 |
| Livewire | 3.x / 4.x |
Installation
composer require alp-develop/laravel-livewire-panel
php artisan panel:install
The installer runs an interactive menu:
- URL prefix (default:
admin) - Navigation mode —
configormodules - CSS Theme — Bootstrap 5, Bootstrap 4, or Tailwind CSS
- Gate driver — None, Spatie, or Laravel Gate
- Registration — enable/disable
- CDN libraries — Chart.js, SweetAlert2, Select2, Flatpickr
- Publish views — optional
Use --defaults to skip prompts.
Quick Start
Create your first page
In config mode, create a Livewire component with the panel layout and register the route manually:
namespace App\Livewire;
use Livewire\Attributes\Layout;
use Livewire\Component;
#[Layout('panel::layouts.app')]
class Dashboard extends Component
{
public function render()
{
return view('livewire.dashboard');
}
}
Register the route in routes/web.php with PanelAuthMiddleware. The prefix must match the panel prefix and the name must follow the pattern panel.{panelId}.:
use App\Livewire\Dashboard;
use AlpDevelop\LivewirePanel\Http\Middleware\PanelAuthMiddleware;
Route::middleware(['web', PanelAuthMiddleware::class])
->prefix('prefix')
->name('panel.admin.')
->group(function () {
Route::get('/', Dashboard::class)->name('home');
});
Visit http://yourapp.test/prefix/login — after login you land on /prefix where your page renders inside the panel layout.
The prefix determines the base URL of the panel. For example, 'prefix' => 'admin' means all panel routes live under /admin/*. After login, the user is redirected to /{prefix}. Route names must follow panel.{panelId}.{name} so the sidebar can resolve them.
See Installation for the full interactive menu, modules mode, and all options.
Documentation
| Guide | Description |
|---|---|
| Installation | Interactive installer, navigation modes, getting started |
| Commands | All panel:* artisan commands |
| Configuration | Panels, guards, modes, CDN, multi-panel, helpers |
| Components | Login, register, sidebar, navbar per panel |
| Navigation | Config mode, modules mode, groups, permissions, user menu |
| Modules | Dashboard, Users, Auth + custom modules |
| Widgets | StatsCard, Chart, RecentTable + custom widgets |
| Themes | Bootstrap 4/5, Tailwind + custom themes |
| Customization | CSS variables, sidebar, navbar, dark mode, layout |
| Icons | Heroicons + custom icon libraries |
| Localization | Language selector, translations, i18n |
| Plugins | Cross-panel extensions with navigation and widgets |
Features
- Multi-panel -- Multiple independent panels in a single app with separate config, theme, guard and navigation per panel.
- 3 CSS themes -- Bootstrap 4, Bootstrap 5 and Tailwind CSS with full CSS variable theming (
--panel-*). - Sidebar state management -- Configurable initial state (expanded/collapsed), persistent or session-only state via
localStorage, collapsible toggle control, and icons-only mode when collapsed. Correctly preserved across SPA navigations. - Dark mode -- Toggle in navbar with
localStoragepersistence. Optional toggle on auth pages viadark_mode_show_on_auth. - Localization -- Built-in translations for 10 languages (en, es, fr, pt, zh, hi, ar, bn, ru, ja). Language selector in navbar and auth pages. Sidebar labels support translation keys automatically. See Localization.
- Module system -- Built-in Dashboard, Users and Auth modules. Create custom modules with
panel:make-module. - Widget system -- StatsCard, Chart and RecentTable widgets. Create custom widgets with
panel:make-widget. - Plugin system -- Cross-panel extensions with lifecycle hooks, navigation and widgets.
- Search -- Global search (
Ctrl+K) with pluggable providers and permission filtering. - Notifications -- Polling notification system with count badge and provider interface.
- Impersonation -- Sign in as another user with safety guards and stop button.
- Gate authorization -- PanelGate with Spatie, Laravel Gate or custom drivers.
- Reusable components --
<x-panel::locale-selector />,<x-panel::dark-mode-toggle />,<x-panel::alert />,<x-panel::button />,<x-panel::card />,<x-panel::icon />,<x-panel::portal />.
Testing
./vendor/bin/pest
License
MIT