yal/laraveldash
LaravelDash is a dashboard package for Laravel that helps you add a customizable admin-style dashboard with widgets, charts, and useful metrics to monitor and manage your application’s data quickly.
Yaldash is a drop-in admin panel for Laravel. The 3.2.0 release adds configurable routes, which changes the first thing you should look at: config/yaldash.php is now the authoritative source for URLs, not the package's route file.
composer show -a yal/laraveldash and compare the illuminate/* constraints against your composer.json. Pin an exact version ("yal/laraveldash": "3.2.0") rather than a floating constraint — release cadence is irregular, so an unexpected minor bump mid-project is a real risk.composer require yal/laraveldash.php artisan vendor:publish --provider="Yal\LaravelDash\LaravelDashServiceProvider"
config/yaldash.php and set the route group explicitly — prefix, middleware, domain, and route names are now configurable here. Do this before writing any custom admin routes so you know the namespace you're working in.php artisan list | grep -i yaldash.php artisan migrate and php artisan storage:link (the panel expects uploaded media to be publicly reachable).php artisan route:list --path=<your-configured-prefix>. Log in at that prefix with the seeded admin account.Where to look first, in order: config/yaldash.php (route customization, prefix, middleware, auth guard, menu), the package's routes file (to see the defaults your config is overriding), published resources/views/vendor/yaldash (the layout you'll extend), and the migrations (to confirm your existing users table won't collide).
First real use case: pick one existing Eloquent model (e.g. Post) and put a CRUD screen on it via the package's resource/CRUD mechanism. That exercises auth, routing, the layout, and the form builder in one pass and tells you quickly whether the panel fits your domain.
Route customization is the new first-class extension point. Define the admin prefix, middleware stack, and route group in config/yaldash.php rather than registering competing routes or editing vendor files. This is now the safest way to avoid prefix collisions with your application's own routes, and it means a single config change can move the whole panel behind a different guard or domain.
CRUD over existing models. Register your model as an admin resource (via config or the package's generator command — the repo documents both). Keep the resource thin: columns, form fields, validation rules, and a query() hook that applies tenant scopes and eager loads. Don't put business logic in the resource definition.
Custom admin pages. With 3.2.0, prefer declaring your extra admin routes inside the package's configured route group (in config where supported, otherwise in routes/web.php wrapped in the same prefix/middleware values pulled from config) over extending the vendor routes file. Pull the prefix and middleware from config('yaldash...') so your routes move with the panel when the config changes.
Sidebar/menu integration. Register entries in config/yaldash.php rather than editing the Blade sidebar. Config-defined menus are the intended extension point and are far less brittle than template overrides.
Authorization. Wrap admin routes in the package middleware plus your own can: gates. Treat the panel's built-in role check as a coarse filter (is this user an admin at all?) and enforce per-model permissions with Laravel policies in the controllers. This keeps you honest if the panel's auth model turns out to be a simple boolean flag.
View overrides. Publish views, then override only the specific files you need under resources/views/vendor/yaldash/.... For lighter touches, use view()->prependNamespace('yaldash', resource_path('views/admin')) to inject your own partials without copying the whole tree.
Media/uploads. Point the package config at a named disk in config/filesystems.php (usually public), and store the disk name in config rather than hard-coding. If you need S3 or private storage, verify the package actually reads the configured disk before assuming it does.
Bounded admin surface. Admin controllers should be thin adapters that call your application's existing actions/services. If yaldash is ever replaced (Filament, Nova, Backpack), you delete the adapters and keep the domain code. Given the irregular release history, this remains the main reason to structure it this way — not optional advice.
Deployment. Publish assets at build time, run php artisan optimize and view:cache in CI, and make sure storage/app/public is linked. Treat published assets as first-party files you own and commit them.
config/yaldash.php, run php artisan config:clear (and route:clear if you cache routes). A stale cached config is the most likely reason a prefix change "did nothing."/yaldash in your own links will break silently. Grep your app and tests for the old prefix and route names, and re-run php artisan route:list to diff before and after.users table and related tables. Review published migrations with php artisan migrate --pretend before running against an existing schema, and edit the published files (they're yours now) rather than the vendor copies.php artisan view:clear is almost always the fix when your override "isn't taking."php artisan route:list --path=<prefix> -v shows exactly what got registered and under which middleware. With configurable routes, always confirm the effective values come from your published config and not the package default.config/yaldash.php (now including routes) → view namespace overrides → published views → published assets → (never) editing vendor/.How can I help you explore Laravel packages today?