The bundled demo dashboard mirrors the AdminLTE HTML index with static numbers.
The dashboard scaffold replaces those with real aggregates computed from
whatever sections you've installed.
php artisan adminlte:scaffold dashboardPublishes a DashboardController + resources/views/adminlte/dashboard/index.blade.php
and the route adminlte.dashboard (/admin/dashboard), plus a DashboardTest.
| Widget | Source |
|---|---|
| Users stat box | users count |
| Projects stat box | adminlte_projects count |
| Unread messages stat box | adminlte_messages where is_read = false |
| Upcoming events stat box | adminlte_events where start_at >= now() |
| Projects-by-status bars | grouped count over adminlte_projects.status |
| Recent activity feed | latest activity_log rows |
Every metric is guarded by Schema::hasTable() / hasColumn(), so the dashboard
renders correctly whether you've scaffolded one section or all of them — counts
simply read 0 for sections you haven't installed. The stat boxes deep-link to
the relevant section when its route exists.
The scaffold registers /admin/dashboard. Point your root route at the same
controller to use it as the landing page:
// routes/web.php
use App\Http\Controllers\AdminLte\DashboardController;
Route::get('/', [DashboardController::class, 'index'])->middleware('auth');Extend DashboardController with your own metrics — it's plain Eloquent/Query
Builder and fully yours to edit.