Automation administration dashboard

* Manual automations
* Scheduled automations
* Incoming webhook triggers
* Domain-event trigger foundation
* Ordered automation steps
* Queued execution
* Run status and execution history
* Per-step execution logs
* Continue-or-stop-on-failure control
* Email actions
* Outgoing webhook actions
* Application log actions
* Delay actions
* Secure incoming webhook secrets
* Automation trigger and action registries
* Extensible action and trigger contracts
* Scheduled automation Artisan command
* Administration navigation
* Automation permissions
* Module registration and boot test
This commit is contained in:
Mark Gregory
2026-07-24 12:38:06 +01:00
parent 7fb71c4d24
commit bf37548faa
25 changed files with 389 additions and 1 deletions
@@ -0,0 +1,24 @@
<?php
namespace Modules\Automation\Providers;
use Illuminate\Support\ServiceProvider;
use Modules\Automation\Console\DispatchScheduledAutomations;
use Modules\Automation\Contracts\ActionRegistry;
use Modules\Automation\Contracts\TriggerRegistry;
use Modules\Automation\Services\AutomationActionRegistry;
use Modules\Automation\Services\AutomationTriggerRegistry;
final class AutomationServiceProvider extends ServiceProvider
{
public function register(): void
{
$this->app->register(RouteServiceProvider::class);
$this->mergeConfigFrom(module_path('Automation', 'Config/config.php'), 'automation');
$this->app->singleton(ActionRegistry::class, AutomationActionRegistry::class);
$this->app->singleton(TriggerRegistry::class, AutomationTriggerRegistry::class);
}
public function boot(): void
{
$this->loadMigrationsFrom(module_path('Automation', 'Database/Migrations'));
$this->loadViewsFrom(module_path('Automation', 'Resources/views'), 'automation');
if ($this->app->runningInConsole()) $this->commands([DispatchScheduledAutomations::class]);
}
}
@@ -0,0 +1,12 @@
<?php
namespace Modules\Automation\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
final class RouteServiceProvider extends ServiceProvider
{
public function boot(): void
{
Route::middleware('web')->group(module_path('Automation', 'Routes/web.php'));
Route::middleware('api')->prefix('api/v1')->group(module_path('Automation', 'Routes/api.php'));
}
}