labs64/laravel-boilerplate
A full-featured Laravel boilerplate and starter kit that ships with authentication, user, role and permission management, themes, settings, activity logs, API support, and an extensible admin foundation so you can bootstrap new applications quickly.
Treat this as a starter kit, not a drop-in package — you clone the repo and own the resulting application. Day one looks like a normal Laravel bootstrap, not a composer require.
git clone, then composer install and npm install..env.example to .env, set DB_* and APP_URL, then php artisan key:generate.php artisan migrate --seed (the seeders create the admin user, roles, permissions, and settings rows).npm run dev (or npm run watch while working).database/seeds/UsersTableSeeder.php (or the equivalent seeder) before trying to log in.routes/web.php — the admin prefix group and the middleware stack are the map of the app.app/Http/Controllers/Admin/ — user, role, permission, log, settings controllers.resources/views/themes/ — theme-specific Blade. Gentelella markup lives here; the layout you @extends is in themes/admin/layouts.config/ — look for the menu, theme, and locale config files. These are the three knobs you'll touch most.Admin/, register routes inside the authenticated admin group, create index/create/edit views that extend the admin layout, and add one entry to the sidebar menu config. That single loop — route → controller → theme view → menu entry → permission seed — is 80% of what you'll do in this codebase.Routing and access control
auth, locale, and role middleware. Don't create a second parallel group with a hand-rolled stack.@can / Gate::allows() in Blade and $this->authorize() in controllers over ad-hoc if (auth()->user()->isAdmin()) checks — the latter multiplies and rots.Controllers and validation
Views and the theme layout
content, and usually styles / scripts for per-page assets). Anything pushed into scripts must be guarded with @push/@stack, or page-specific JS leaks between screens.Menu and navigation
admin.foo.index, admin.foo.edit).Localization
__(). The boilerplate ships a locale middleware and a language switcher; new languages require a translation directory plus an entry in the locale config (and often a flag/icon mapping).Settings, logging, 2FA, themes
composer.json platform requirements before committing, and budget for an upgrade (or a hard pin on PHP) rather than assuming it drops into a modern stack.php artisan config:clear and php artisan cache:clear. In production, re-run config:cache as part of deploy. If using a permission cache, forget it after seeding.db:seed on a live-ish DB will duplicate roles/permissions/settings unless they use firstOrCreate/updateOrCreate. When you add seeds, follow that pattern.npm run dev, a missing storage:link, or a package that needs vendor:publish for its assets.composer update. If you want to track upstream, keep your changes in clearly separated commits/paths so you can diff and cherry-pick instead of resolving a three-way merge across resources/views.actingAs($user) plus the right role/permission attached. Seed minimal roles in test setup rather than relying on the production seeders.How can I help you explore Laravel packages today?