jcergolj/laravellte
Laravellte integrates AdminLTE with Laravel, offering Blade layouts, auth scaffolding, and reusable UI components for responsive admin dashboards. It provides ready-made sidebars, menus, and dashboard pages, so you can focus on app logic instead of manually configuring AdminLTE assets.
composer.json constraints for laravel/framework, livewire/livewire, and alpinejs before composer require.php artisan vendor:publish --force), since the Alpine and Livewire asset pipeline changed. Diff the published files against what you had — Turbolinks-specific script tags and event wiring will need to be deleted by hand.resources/views/layouts/ (the base layout is where @livewireStyles / @livewireScripts and Alpine get loaded), and the config file for any component namespace/prefix settings.Route::get('/dashboard', App\Http\Livewire\Dashboard::class); — and confirm Alpine works inside it with a trivial x-data="{ open: false }" toggle. That one page exercises every moving part of this release (routing, Livewire 2 lifecycle, Alpine 2 init, no Turbolinks).Route::get(...) → controller → return view(...) where the view was a thin Livewire wrapper, collapse it into a route that points at the component class directly. Keep a layout assigned via ->layout('layouts.app') in the component's render() or the global livewire.layout config.app/Http/Livewire/Admin/Users/Index.php is referenced as <livewire:admin.users.index /> and generated with php artisan make:livewire admin.users.index. This is the release's answer to component sprawl — adopt the folder convention early rather than retrofitting later.wire:loading / wire:loading.class for perceived responsiveness, and keep the layout's CSS/JS in a single cached bundle.x-data, x-init is the hook for side effects, and $dispatch is the cross-component event bus. Bind Livewire state with @entangle('property') — this is the cleanest bridge between the two and avoids manual dispatchBrowserEvent plumbing.wire:ignore and re-init inside x-init or on livewire:load, otherwise Livewire's DOM diffing resets Alpine state on every render.@livewireStyles in <head>, @livewireScripts before </body>, and @stack('scripts') after it. Any view that @extends that layout then only needs its component tag.document.addEventListener('turbolinks:load', ...), data-turbolinks attributes, and the Turbolinks <script> tag in your layout. Grep the whole resources/ tree for turbolinks — Alpine initialization previously hung off that event in many setups, and if you don't move it to livewire:load or x-init, Alpine simply never boots.x-data returning a function, Alpine.data() registration, and $dispatch argument shapes differ. Pin your docs to v2 while you're on this release, or you'll chase phantom bugs.x-data is inert but Livewire works, it's ordering, not code.@livewireStyles.<livewire:foo> reference and every Livewire::component() registration must move to dot notation. Grep for livewire: after any move.livewire JS object in console for component state, and php artisan view:clear after publishing view changes.How can I help you explore Laravel packages today?