studio/laravel-totem
Laravel Totem provides a Horizon-style dashboard to manage Laravel Scheduler jobs. Create, enable/disable, and edit scheduled Artisan commands without changing code. Includes migrations/assets, auth customization, and supports Laravel 11/12 on PHP 8.2+.
composer require studio/laravel-totem
php artisan migrate
php artisan totem:assets
* * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1
/totem in your local environment (or configure auth via Totem::auth() in AppServiceProvider).Schedule a command (e.g., email:send-welcome):
/totem.dailyAt('09:00')).app/Console/Kernel.php.name=John --force).protected $hidden = true in the command class.laravel/vonage-notification-channel or laravel/slack-notification-channel and configure in config/totem.php.php artisan schedule:list
Override default auth (e.g., for team access):
Totem::auth(function ($request) {
return $request->user()->hasRole('admin');
});
For multi-server setups (e.g., separate Redis for UI/workers):
TOTEM_CACHE_STORE=redis-shared
Disable caching entirely (direct DB queries):
TOTEM_CACHE_STORE=array
Reduce dropdown clutter in the UI:
'artisan' => [
'command_filter' => ['stats:*', 'email:daily-reports'],
'whitelist' => true, // Default; set to false for blacklist
],
Change from web middleware (e.g., to api):
TOTEM_WEB_MIDDLEWARE=api
Avoid conflicts with existing tables:
TOTEM_TABLE_PREFIX=totem_
Cron Misconfiguration:
* * * * * cd /path && php artisan schedule:run >> /dev/null 2>&1.php artisan schedule:work (manual test).Cache Inconsistency:
TOTEM_CACHE_STORE points to a shared cache (e.g., Redis) or disable caching (array).SQLite Rollback:
migrate:rollback fails.php artisan totem:migrate:fresh or manually drop tables.Hidden Commands:
protected $hidden = false in the command class.Parameter Parsing:
name=value --option=value
Avoid spaces around = or --.Task Output:
Js::from()).php artisan totem:clear-cache to refresh the UI.Route Conflicts:
/totem conflicts with other routes.routes/web.php:
Route::prefix('admin')->group(function () {
Route::get('totem', [\Studio\Totem\Http\Controllers\TaskController::class, 'index']);
});
Vue 3 Migration:
npm run dev
Custom Notifications:
Studio\Totem\Notifications\TaskCompleted to add logic (e.g., Discord webhooks).Task Events:
task:scheduled, task:completed, or task:failed events in EventServiceProvider.UI Customization:
resources/views/vendor/totem.resources/js/totem.Database Connection:
TOTEM_DB_CONNECTION in .env for multi-database setups./totem to local or staging in config/totem.php:
'environments' => ['local', 'staging'],
php artisan totem:export/import.How can I help you explore Laravel packages today?