A reusable Laravel starter kit with authentication, roles, and a blog ready to publish, so every new project starts from a working foundation, not a blank repo.
Route::middleware(['auth', 'verified'])->group(function () {
Route::livewire('dashboard', 'pages::app.dashboard')->name('dashboard');
Route::middleware(['role:super-admin|admin'])->prefix('system')->group(function () {
// Users, Sitemap, Settings, Media Library
});
});
Real code, not marketing copy
Route::middleware(['auth', 'verified'])->group(function () {
Route::livewire('dashboard', 'pages::app.dashboard')->name('dashboard');
Route::middleware(['role:super-admin|admin'])->prefix('system')->group(function () {
// Users, Sitemap, Settings, Media Library
});
});
protected static function booted(): void
{
static::created(
fn (User $user) => $user->assignRole(Role::findOrCreate('staff'))
);
}
public function registerMediaCollections(): void
{
$this->addMediaCollection('featured_image')
->singleFile()
->acceptsMimeTypes(['image/jpeg', 'image/png', 'image/webp']);
}
public function getSlugOptions(): SlugOptions
{
return SlugOptions::create()
->generateSlugsFrom('title')
->saveSlugsTo('slug')
->doNotGenerateSlugsOnUpdate();
}
test('admin can view the users list', function () {
$admin = User::factory()->create();
$admin->syncRoles(Role::findOrCreate('admin'));
$other = User::factory()->create(['name' => 'Jane Doe']);
$this->actingAs($admin)
->get(route('system.users'))
->assertOk()
->assertSee('Jane Doe');
});
Login, registration, password reset, and email verification, built on Laravel Fortify.
3 roles (super-admin, admin, staff) via Spatie Permission. New roles are created with tinker or a seeder: no admin UI, by design.
Title, excerpt, body, featured image, and a publish toggle, with stable slugs via Spatie Sluggable.
Browse and delete every uploaded file across every model from one System panel page.
Each role (super-admin, admin, staff) gets its own Livewire dashboard with Chart.js charts.
Users, Sitemap, Settings, and Media Library, gated to admin and super-admin.
Every admin action is audited via Spatie Activitylog, visible to super-admins.
101 Pest tests, Pint formatting, and Larastan static analysis, wired into CI.
release-please publishes a GitHub Release with a real changelog from Conventional Commits.
Server-driven UI: no separate API layer or SPA build to maintain alongside the backend.
Battle-tested roles, media, slugs, activity logging, and sitemaps: nothing reinvented.
Readable test syntax, and a real safety net: 101 tests covering every role boundary in this repo.
Let's build
Clone the starter kit, log in as admin, and make it yours.
Direct contact
HQ
Jakarta, Indonesia
hello@recodex.id
Phone
+62 21 0000 0000