shipbytes/laravel-ui-kit
Laravel 12+ admin panel and auth UI scaffolding with Livewire 3, Volt, Fortify, and Tailwind v4. One command installs auth pages, 2FA, admin shell, dashboard, and 7 optional modules, with a health-check doctor command.
admin-middleware, impersonation, and activity-log until you have real users and real support load — avoiding premature Spatie Permission complexity.impersonation (reproduce user bugs), activity-log (audit trail for compliance conversations), and support-tickets change what your support team can do without engineering. That's a customer-success capability decision, not a code decision.Consider it when all of these hold:
laravel new project, or an API-only app you're now bolting an admin panel onto. The README is explicit that it's designed for fresh installs.routes/auth.php, LoginForm.php, and resources/views/livewire/pages/auth/*. It aborts outright on Jetstream. If your app already has either, the install path is "rip out the starter by hand first," which is a separate, riskier project.UiKitUser trait into your repo. You will read, review, and maintain them. That's fine, but it must be a conscious yes.Look elsewhere when:
To executives: This is a $0-license (MIT) starting kit that removes roughly one to three weeks of undifferentiated work — login, password reset, email verification, an admin layout, a users screen, and optional support/audit/analytics modules — from a Laravel project. It doesn't add a runtime dependency or a subscription; it generates code into our repo that we own outright. The trade-off is that it's new and unproven (no adoption yet, no tagged release), so the recommendation is a one-day spike on a throwaway branch, not a commitment. Success criteria: we get a working /login and /admin in an afternoon and a clear read on how much of the generated code we'd have to rewrite.
To engineering: It's a scaffolder, not a library. php artisan ui-kit:install publishes configs, Blade views, Livewire/Volt components, routes, and a UiKitUser trait into our app, patches config/fortify.php and config/admin.php between idempotent markers, and prints a numbered checklist for the handful of things it won't do (add the trait to User, drop <x-ui-kit::head /> / <x-ui-kit::banners /> into the layout, wire the Tailwind preset and Vite imports). Stack is Livewire 3 + Volt + Fortify + Tailwind 3 on PHP 8.1–8.4, Laravel 10–13, CI-tested across that matrix. Only viable on a fresh app with no Breeze/Jetstream — the installer preflights for those and aborts on Jetstream. Everything it publishes is reviewable diff in our repo, so the exit cost is low: we keep the files, drop the package.
The honest risk slide: 0 stars, 0 dependents, no tagged release, README + CHANGELOG only, single-maintainer profile. Mitigations: pin to a specific commit, review every published file before merging, tag our own baseline so we're not tracking main, and treat it as a fork-on-day-one starting point. Also flag that it supports Laravel 10 despite L10 being out of security support — we should set the internal rule that new projects start at L11+ regardless of what the package tolerates.
The ask: approve a time-boxed evaluation (one engineer, one day, fresh app, --modules=admin-middleware,profile) with a go/no-go against three tests: does the generated admin shell survive contact with our brand, does the Spatie Permission wiring match our role model, and how many generated files would we rewrite in month one. If the answer to the third is "most of them," we go to Filament and this becomes a reference implementation rather than a dependency.
How can I help you explore Laravel packages today?