djl997 / laravel-maintenance-scheduler
Package to manage application version, schedule maintenance, version changelog and maintenance mode.
Requires
- php: ^8.0
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
README
Laravel Maintenance Scheduler is a package to manage your application versions, schedule maintenance, generate changelog and make maintenance mode more user friendly. The goal is to inform end-users about the maintenance schedule and version changes. This package will not manage automated releases and/or run release scripts and/or automatically publish generated changelogs.
Features
- Generate scheduled human readable maintenance messages.
- Generate minor or patch version numbers, with one PHP Artisan Command.
- Generate changelog (Semantic Versioning)
- Automatically hook into
php artisan down
andphp artisan up
- If no maintenance moments are scheduled, it will create and activate an unscheduled maintenance moment automatically.
Roadmap
Here is a rough roadmap of things to come (not in any specific order):
- Generate changelog.md file
- Create cancel command
- Improve setup
- Connect recalculation to initial version
- Configure initial version
- Add current version to app layout (+how to)
- Configure first version
- Translations (EN, NL, DE)
Requirements
Laravel Maintenance Scheduler requires PHP 8+ and Laravel 8+.
Installation
You can use this package in your project via composer:
composer require djl997/laravel-maintenance-scheduler
Light version
In the light version, you don't need any database tables. Just configure the version via the config/maintenance-scheduler.php
config file:
php artisan vendor:publish --tag=maintenance-config
Full version
Publish migration files:
php artisan vendor:publish --tag=maintenance-migrations
Migrate the required database table maintenance_schedule
:
php artisan migrate
Install first version.
php artisan maintenance:install
Usage
Note! This package is still in development. You are welcome to use this package, but major changes in API can happen. No promises.
Commands:
php artisan maintenance:list # List all versions php artisan maintenance:create # Wizard to create and schedule a new maintenance php artisan maintenance:delete {maintenanceID} # Delete one specific maintenance by ID php artisan maintenance:recalculate # Recalculate version structure (semver)
Enable Maintenance Mode:
To activate maintenance mode, run the default Laravel command php artisan down
. Laravel Maintenance Scheduler will search for scheduled maintenances scoped to that date and activate them. Note if no maintenances were scheduled, there will automatically be an unscheduled maintenance created and activated.
Disable Maintenance Mode:
To deactivate maintenance mode, run php artisan up
. Laravel Maintenance Scheduler will complete the active maintenance and make it available for a changelog. You can copy-paste this for example to Github.
Show maintenance message:
use Djl997\LaravelMaintenanceScheduler\Models\MaintenanceSchedule; $message = MaintenanceSchedule::getMaintenanceMessage();
Show current version:
use Djl997\LaravelMaintenanceScheduler\Models\MaintenanceSchedule; $version = MaintenanceSchedule::getCurrentVersion();
The value is cached in Laravel Cache to prevent unnecessary queries to the database. If the incorrect version is showed you can try to run php artisan cache:clear
or php artisan optimize:clear
and check if it will work after that.
Custom Configuration
If you want to change the default config you can publish the config file:
php artisan vendor:publish --tag=maintenance-config
After editting the config file, please run php artisan maintenance:recalculate
. All versions should be updated to your new structure.
Events
Laravel Maintenance Scheduler doesn't dispatch it's own events. In stead we hook into the default Laravel Artisan Events: MaintenanceModeEnabled
and MaintenanceModeDisabled
. Of course you can do this too.
In addition, you can observe the MaintenanceSchedule model in your application's App\Providers\EventServiceProvider
class:
use Djl997\LaravelMaintenanceScheduler\Models\MaintenanceSchedule; MaintenanceSchedule::observe(YourObserver::class);
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
This package is in active development, ideas or improvements are welcome.
License
The MIT License (MIT). Please see License File for more information.