devianl2 / laravel-totem
A Laravel package to manage your cron jobs through a beautiful dashboard
Requires
- php: >=7.3
- ext-json: *
- doctrine/dbal: ^3.1
- illuminate/bus: ^8.11
- illuminate/console: ^8.11
- illuminate/contracts: ^8.11
- illuminate/database: ^8.11
- illuminate/events: ^8.11
- illuminate/notifications: ^8.11
- laravelcollective/html: ^6.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/database: ^6.0
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
Suggests
- nexmo/client: Required for sms notifications.
README
Introduction
Manage your Laravel Schedule
from a pretty dashboard. Schedule your Laravel Console Commands
to your liking. Enable/Disable scheduled tasks on the fly without going back to your code again.
Documentation
Compatiblity Matrix
Installing
Totem
requires Laravel v5.4 and above, please refer to the above table for compatability. Use composer to install totem to your Laravel project
composer require studio/laravel-totem
Laravel Totem supports auto package discovery for Laravel v5.5+, therefore service provider registration is not required in Laravel v5.5+
Add TotemServiceProvider
to the providers
array of your Laravel v5.4 application's config/app.php
Studio\Totem\Providers\TotemServiceProvider::class,
Once Laravel Totem
is installed & registered,
- Run the migration
php artisan migrate
- Publish
Totem
assets to your public folder using the following command
php artisan totem:assets
Table Prefix
Totems' tables use generic names which may conflict with existing tables in a project. To alleviate this the .env
param TOTEM_TABLE_PREFIX
can be set which will apply a prefix to all of Totems tables and their models.
Updating
Please republish totem assets after updating totem to a new version
php artisan totem:assets
Configuration
Cron Job
This package assumes that you have a good understanding of Laravel's Task Scheduling and Laravel Console Commands. Before any of this works please make sure you have a cron running as follows:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
Web Dashboard
Laravel Totem
's dashboard is inspired by Laravel Horizon
. Just like Horizon you can configure authentication to Totem
's dashboard. Add the following to the boot method of your AppServiceProvider or wherever you might seem fit.
use Studio\Totem\Totem; Totem::auth(function($request) { // return true / false . For e.g. return Auth::check(); });
By default Totem's dashboard only works in local environment. To view the dashboard point your browser to /totem of your app. For e.g. laravel.dev/totem.
Filter Commands Dropdown
By default Totem
outputs all Artisan commands on the Create/Edit tasks. To make this dropdown more concise there is a filter config feature that can be set in the totem.php
config file.
Example filters
'artisan' => [ 'command_filter' => [ 'stats:*', 'email:daily-reports' ], ],
This feature uses fnmatch syntax to filter displayed commands. stats:*
will match all Artisan commands that start with stats:
while email:daily-reports
will only match the command named email:daily-reports
.
This filter can be used as either a whitelist or a blacklist. By default it acts as a whitelist but an option flag can be set to instead act as a blacklist.
'artisan' => [ 'command_filter' => [ 'stats:*', 'email:daily-reports' ], 'whitelist' => true, ],
If the value of whitelist is false
then the filter acts as a blacklist.
'whitelist' => false
Middleware
Laravel Totem
uses the default web and api middleware but if customization is required the middleware can be changed by setting the appropriate .env
value. These values can be found in config/totem.php
.
Making Commands available in Laravel Totem
All artisan commands can be scheduled. If you want to hide a command from Totem make sure you have the hidden
attribute set to true in your command. For e.g.
protected $hidden = true;
From L5.5 onwards all commands are auto registered, so this wouldn't be a problem.
Command Parameters
If your command requires arguments or options please use the optional command parameters field. You can provide parameters to your command as a string in the following manner
name=john.doe --greetings='Welcome to the new world'
In the example above, name is an argument while greetings is an option
Console Command
In addition to the dashboard, Totem provides an artisan command to view a list of scheduled task.
php artisan schedule:list
Screenshots
Task List
Task Details
Edit Task
Artisan Command to view scheduled tasks
Changelog
Important versions listed below. Refer to the Changelog for a full history of the project.
Credits
Bug reports, feature requests, and pull requests can be submitted by following our Contribution Guide.
Contributing & Protocols
License
This software is released under the MIT License.
© 2020 Roshan Gautam, All rights reserved.