{"id":21680926,"url":"https://github.com/mooxphp/jobs","last_synced_at":"2026-02-20T16:01:03.586Z","repository":{"id":191436798,"uuid":"684805146","full_name":"mooxphp/jobs","owner":"mooxphp","description":"[READ-ONLY] Filament plugin for managing job queues, failed jobs and batches","archived":false,"fork":false,"pushed_at":"2025-09-10T11:34:59.000Z","size":1872,"stargazers_count":59,"open_issues_count":1,"forks_count":13,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-11-07T03:16:37.719Z","etag":null,"topics":["filament","filamentphp","filamentplugin","job-queue","job-scheduler","laravel","laravel-package"],"latest_commit_sha":null,"homepage":"https://moox.org","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mooxphp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["mooxphp"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2023-08-29T22:26:07.000Z","updated_at":"2025-10-31T14:01:29.000Z","dependencies_parsed_at":"2023-11-29T17:26:32.576Z","dependency_job_id":"febeb31a-2e63-43c9-a2e0-97500fc23376","html_url":"https://github.com/mooxphp/jobs","commit_stats":null,"previous_names":["adrolli/filament-jobs-manager"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/mooxphp/jobs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooxphp%2Fjobs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooxphp%2Fjobs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooxphp%2Fjobs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooxphp%2Fjobs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mooxphp","download_url":"https://codeload.github.com/mooxphp/jobs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooxphp%2Fjobs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29656589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T09:27:29.698Z","status":"ssl_error","status_checked_at":"2026-02-20T09:26:12.373Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filament","filamentphp","filamentplugin","job-queue","job-scheduler","laravel","laravel-package"],"created_at":"2024-11-25T15:22:38.185Z","updated_at":"2026-02-20T16:01:03.575Z","avatar_url":"https://github.com/mooxphp.png","language":"PHP","readme":"\u003cdiv class=\"filament-hidden\"\u003e\n\n![Moox Jobs](banner.jpg)\n\n\u003c/div\u003e\n\n# Moox Jobs\n\nManaging Job Queues, Failed Jobs and Batches in Filament.\n\n**In the Moox app:** Use `php artisan moox:install` to install all Moox packages and run their migrations in one step—no need to run package-specific install commands.\n\nAlternative to Laravel Horizon, if you use the database driver for queues. Nice addon to Laravel Horizon, if you use Redis. See [Limitations](#limitations) below for more information about Redis, Amazon SQS and Beanstalkd compatibility. More information about Laravel Job Queues and how Moox Jobs works in our [Jobs for Beginners Guide](#jobs-for-beginners).\n\n## Quick installation\n\n### Using the Moox app (recommended)\n\nIf you use the Moox application, a single command installs **all** Moox packages and runs their migrations:\n\n```bash\nphp artisan moox:install\n```\n\nThis will handle the Jobs package along with every other Moox package—including publishing configs, running migrations, and registering plugins. You do **not** need to run `mooxjobs:install` or any other package-specific install command when using `moox:install`.\n\n### Installing the Jobs package only\n\nIf you are not using the full Moox app and only want this package:\n\n```bash\ncomposer require moox/jobs\nphp artisan mooxjobs:install\n```\n\nCurious what the install commands do? See [manual installation](#manual-installation) below.\n\n## Requirements\n\n| Plugin Version | Laravel Version | Filament Version | PHP Version |\n| -------------- | --------------- | ---------------- | ----------- |\n| 2.x            | 9.x             | 2.x              | \\\u003e 8.0      |\n| 3.x            | 10.x            | 3.x              | \\\u003e 8.1      |\n| 5.x            | 11.x            | 5.x              | \\\u003e 8.3      |\n\nin short steps\n\n```bash\ncomposer create-project laravel/laravel moox-jobs-demo\ncomposer require filament/filament\nphp artisan filament:install --panels\nphp artisan make:filament-user\n```\n\n## Upgrading from Moox Jobs V2\n\nMoox Jobs V3 requires changes to the database schema. We made an convenient update command for you:\n\n```bash\ncomposer update\nphp artisan mooxjobs:update\n```\n\nThe update command takes care about changing and creating the new fields without loosing data. Alternatively you may delete the job-manager table and simply run the following install command.\n\n## Features\n\n### Jobs\n\nMonitor your running and finished jobs.\n\n![screenshot-jobs](screenshot/jobs-jobs.jpg)\n\n### Jobs waiting\n\nSee all waiting Jobs queued, delete one, many or even all waiting jobs at once before they hit the queue. And, yes we do not only have dark mode.\n\n![screenshot-waiting](screenshot/jobs-waiting.jpg)\n\n### Jobs failed\n\nSee all failed Jobs including details, retry or delete single jobs, many jobs or even all failed jobs at once.\n\n![screenshot-details](screenshot/jobs-details.jpg)\n\n![screenshot-detail](screenshot/jobs-detail.jpg)\n\n### Job batches\n\nMonitor your job batches, prune batches.\n\n![screenshot-batches](screenshot/jobs-batches.jpg)\n\n## Configuration\n\nThe configuration of the package is work in progress. To make it better suitable for integrators, we will add more flexibility and better translations soon.\n\nNew in 3.1 is the switch to Google Icons and the ability to [switch back to Heroicons in Moox Core](https://github.com/mooxphp/core#disable-google-icons).\n\nIf there is anything else you want to configure, drop us an issue.\n\n## Manual Installation\n\nThis Laravel package is made for FilamentPHP and the awesome TALL-Stack.\n\n**Note:** If you use the Moox app, run `php artisan moox:install` instead—it installs all packages and runs all migrations (including Jobs) in one go. The steps below are only for installing this package by itself without the unified installer.\n\nIf you don't want to use our install command, follow these manual steps to install the package.\n\nInstall the package via Composer:\n\n```bash\ncomposer require moox/jobs\n```\n\nCreate the necessary tables:\n\n```bash\nphp artisan vendor:publish --tag=\"jobs-manager-migration\"\nphp artisan vendor:publish --tag=\"jobs-batch-migration\"\nphp artisan vendor:publish --tag=\"jobs-queue-migration\"\nphp artisan vendor:publish --tag=\"jobs-manager-foreigns-migration\"\n\n# Queue tables, if using the database driver\n# Not required for Redis, Amazon SQS or Beanstalkd\nphp artisan queue:table\nphp artisan queue:failed-table\nphp artisan queue:batches-table\n\nphp artisan migrate\n```\n\nPublish the config file with:\n\n```bash\nphp artisan vendor:publish --tag=\"jobs-config\"\n```\n\nThis is the content of the published config file:\n\n```php\nreturn [\n    'resources' =\u003e [\n        'jobs' =\u003e [\n            'enabled' =\u003e true,\n            'label' =\u003e 'Job',\n            'plural_label' =\u003e 'Jobs',\n            'navigation_group' =\u003e 'Job manager',\n            'navigation_icon' =\u003e 'heroicon-o-play',\n            'navigation_count_badge' =\u003e true,\n            'resource' =\u003e Moox\\Jobs\\Resources\\JobsResource::class,\n        ],\n        'jobs_waiting' =\u003e [\n            'enabled' =\u003e true,\n            'label' =\u003e 'Job waiting',\n            'plural_label' =\u003e 'Jobs waiting',\n            'navigation_group' =\u003e 'Job manager',\n            'navigation_icon' =\u003e 'heroicon-o-pause',\n            'navigation_count_badge' =\u003e true,\n            'resource' =\u003e Moox\\Jobs\\Resources\\JobsWaitingResource::class,\n        ],\n        'failed_jobs' =\u003e [\n            'enabled' =\u003e true,\n            'label' =\u003e 'Failed Job',\n            'plural_label' =\u003e 'Failed Jobs',\n            'navigation_group' =\u003e 'Job manager',\n            'navigation_icon' =\u003e 'heroicon-o-exclamation-triangle',\n            'navigation_count_badge' =\u003e true,\n            'resource' =\u003e Moox\\Jobs\\Resources\\JobsFailedResource::class,\n        ],\n        'job_batches' =\u003e [\n            'enabled' =\u003e true,\n            'label' =\u003e 'Job Batch',\n            'plural_label' =\u003e 'Job Batches',\n            'navigation_group' =\u003e 'Job manager',\n            'navigation_icon' =\u003e 'heroicon-o-inbox-stack',\n            'navigation_count_badge' =\u003e true,\n            'resource' =\u003e Moox\\Jobs\\Resources\\JobBatchesResource::class,\n        ],\n    ],\n    'pruning' =\u003e [\n        'enabled' =\u003e true,\n        'retention_days' =\u003e 7,\n    ],\n];\n```\n\nRegister the Plugins in `app/Providers/Filament/AdminPanelProvider.php`:\n\n```php\n-\u003eplugins([\n    \\Moox\\Jobs\\JobsPlugin::make(),\n    \\Moox\\Jobs\\JobsWaitingPlugin::make(),\n    \\Moox\\Jobs\\JobsFailedPlugin::make(),\n    \\Moox\\Jobs\\JobsBatchesPlugin::make(),\n])\n```\n\nInstead of publishing and modifying the config-file, you can also do all settings in AdminPanelProvider like so:\n\n```php\n-\u003eplugins([\n\t\\Moox\\Jobs\\JobsPlugin::make()\n\t    -\u003elabel('Job runs')\n\t    -\u003epluralLabel('Jobs that seems to run')\n\t    -\u003eenableNavigation(true)\n\t    -\u003enavigationIcon('heroicon-o-face-smile')\n\t    -\u003enavigationGroup('My Jobs and Queues')\n\t    -\u003enavigationSort(5)\n\t    -\u003enavigationCountBadge(true)\n\t    -\u003eenablePruning(true)\n\t    -\u003epruningRetention(7),\n\t\\Moox\\Jobs\\JobsWaitingPlugin::make()\n\t    -\u003elabel('Job waiting')\n\t    -\u003epluralLabel('Jobs waiting in line')\n\t    -\u003eenableNavigation(true)\n\t    -\u003enavigationIcon('heroicon-o-calendar')\n\t    -\u003enavigationGroup('My Jobs and Queues')\n\t    -\u003enavigationSort(5)\n\t    -\u003enavigationCountBadge(true)\n\t\\Moox\\Jobs\\JobsFailedPlugin::make()\n\t    -\u003elabel('Job failed')\n\t    -\u003epluralLabel('Jobs that failed hard')\n\t    -\u003eenableNavigation(true)\n\t    -\u003enavigationIcon('heroicon-o-face-frown')\n\t    -\u003enavigationGroup('My Jobs and Queues')\n\t    -\u003enavigationSort(5)\n\t    -\u003enavigationCountBadge(true)\n])\n```\n\nYou don't need to register all Resources. If you don't use Job Batches, you can hide this feature by not registering it.\n\n## Jobs for Beginners\n\nJob queues are very useful. Every task that needs more than a couple of seconds can be handled in the background and Moox Jobs gives you full control in your applications UI. But starting with Laravel Job Queues needs some preparation.\n\nThe first decision depends on your hosting and deployment:\n\n### Laravel Forge\n\nLaravel Forge supports Redis, Horizon and Supervisor. The best way is to install Horizon and to enable it in the Forge UI. You can then schedule any job (or command dispatching your job).\n\nTo schedule any command without the need to change code (in kernel.php), you might consider using the [Filament Database Schedule plugin](https://filamentphp.com/plugins/husam-tariq-database-schedule).\n\nMore information:\n\n-   [Laravel Forge docs: Queues](https://forge.laravel.com/docs/sites/queues.html)\n\n### Shared Hosting\n\nOn most Shared Hosting and Managed Servers Redis and Supervisor are not available. The good thing: using Moox Jobs on shared hosts will perfectly work. Using the database queue-driver, you will be able to monitor and control your jobs and batches without pain.\n\nYou need SSH access to start the queue worker like this:\n\n```bash\nphp artisan queue:work\n```\n\nand the Laravel Scheduler like this:\n\n```bash\nphp artisan schedule:work\n```\n\nThe best way, to automate your jobs (and care for re-running the queue:worker after failure), is to create a crontab to run the Laravel Scheduler minutely and to use the [Filament Database Schedule plugin](https://filamentphp.com/plugins/husam-tariq-database-schedule) to run your jobs (or commands).\n\nMore information:\n\n-   [Laravel Queues for Beginners](https://sagardhiman021.medium.com/demystifying-queues-and-jobs-in-laravel-a-beginners-guide-with-examples-in-2023-a8e52698a298)\n-   [Using Laravel Queues on Shared Hosting](https://talltips.novate.co.uk/laravel/using-queues-on-shared-hosting-with-laravel)\n\n### Shared Hosting API\n\nThe Shared Hosting API in Moox Core allows to `schedule/run` from an URL. And in Moox Jobs we use this feature to do a `queue:work` from an URL.\n\n-   https://yourdomain.com/queue/work?token=secure\n\nYou can add an optional `timeout` parameter to the URL to specify the timeout for the queue worker in seconds. If no timeout is specified, the default timeout of 60 seconds is used.\n\n-   https://yourdomain.com/queue/work?token=secure\u0026timeout=300\n\nIf you want to use the Shared Hosting API, you need to set the `SHARED_HOSTING_ENABLED` in [Core Config](https://github.com/mooxphp/core/blob/main/README.md#Shared-Hosting) to `true` and the `SHARED_HOSTING_TOKEN` config to a secure token.\n\n### Root Server\n\nOn a Root Server, VPS or Cloud Server Droplet the fastest way is to do job queuing like shared hosting. But as the combination Redis with Supervisor is much more stable and minimum twice as fast, you may also consider installing Redis and Supervisor manually using root privileges or (depending on your provider and deployment, maybe Forge, Envoyer or Ploi.io) a more convenient UI.\n\nMore information:\n\n-   [Laravel Horizon on Ubuntu](https://dev.to/shuv1824/laravel-horizon-with-nginx-and-ubuntu-18-04-on-digitalocean-1fod)\n\n### Laravel Vapor\n\nOn Laravel Vapor, the first-party deployment tool for going Serverless (using Amazon AWS Lambda Services), Laravel will automatically use Amazon SQS (Simple Queue Services) as queue driver. Laravel SQS is partly supported by Moox Jobs, means you can monitor jobs and failed jobs, retry failed jobs and use the progress feature. Pending jobs and batches are currently not implemented.\n\nMore information:\n\n-   [Laravel Vapor Docs: Queues](https://docs.vapor.build/resources/queues.html)\n\nWhen you got your job queues up and running, a good way to test Moox Jobs is using our\n\n### Demo Job\n\nYou do not need to change anything in your Jobs to work with Filament Job Monitor. But especially for long running jobs you may find this example interesting:\n\n```php\n\u003c?php\n\nnamespace App\\Jobs;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\nuse Moox\\Jobs\\Traits\\JobProgress;\n\nclass DemoJob implements ShouldQueue\n{\n    use Dispatchable, InteractsWithQueue, JobProgress, Queueable, SerializesModels;\n\n    public $tries;\n\n    public $timeout;\n\n    public $maxExceptions;\n\n    public $backoff;\n\n    public function __construct()\n    {\n        $this-\u003etries = 10;\n        $this-\u003etimeout = 120;\n        $this-\u003emaxExceptions = 3;\n        $this-\u003ebackoff = 240;\n    }\n\n    public function handle()\n    {\n        $count = 0;\n        $steps = 10;\n        $final = 100;\n\n        while ($count \u003c $final) {\n            $this-\u003esetProgress($count);\n            $count = $count + $steps;\n            sleep(10);\n        }\n    }\n}\n\n```\n\nCreate a file named DemoJob.php in app/Jobs/ and copy over the contents above.\n\n### Customize Job Name\n\nBy default, the name of the tasks comes from the name of the class. This can be rewritten based on the following example.\n\n```php\nuse Illuminate\\Support\\Carbon;\n...\npublic function displayName()\n{\n    $now = Carbon::now();\n    return \"Demo Job | Started: \".$now;\n}\n\n```\n\n### Demo Job Command\n\nThis example command will start the job:\n\n```php\n\u003c?php\n\nnamespace App\\Console\\Commands;\n\nuse App\\Jobs\\DemoJob;\nuse Illuminate\\Console\\Command;\n\nclass DemoJobCommand extends Command\n{\n    protected $signature = 'moox:demojob';\n\n    protected $description = 'Start the Moox Demo Job';\n\n    public function __construct()\n    {\n        parent::__construct();\n    }\n\n    public function handle()\n    {\n        $this-\u003einfo('Starting Moox Demo Job');\n\n        DemoJob::dispatch();\n\n        $this-\u003einfo('Moox Demo Job finished');\n    }\n}\n\n```\n\nCreate a file DemoJobCommand.php in app/Console/Commands. Then do a\n\n```bash\nphp artisan moox:demojob\n```\n\nto dispatch one Demo Job.\n\nNow you can monitor the progress of your job in the Filament UI.\n\n## Progress\n\nAs shown in the Demo Job above, Moox Jobs comes with a progress feature. Using the JobProgress trait in your jobs is an optional thing. Jobs without the JobProgress-trait run and show up in the Moox Jobs UI, just missing the comfort of having the progress shown.\n\nIf you want to use the progress feature, be reminded that:\n\n-   Your jobs will not run without Moox Jobs installed, when using the progress feature. If your jobs are part of an installable package, you should consider requiring Moox Jobs with your package.\n-   If you want to remove Moox Jobs from your app, you have to remove the progress feature from your jobs prior to uninstalling Moox Jobs.\n-   Coding the setProgress may not give an exact information about the progress. But especially for long running jobs it might be interesting to see where the job hangs (or just makes a long break). Debugging jobs without any glue about the progress may be much harder.\n\n## Model\n\nThe database model for Moox Jobs is designed with [Vemto](https://vemto.app):\n\n![jobs-model](screenshot/vemto-jobs.jpg)\n\n## Authorization\n\nWe use Filament Shield instead, so that code is not heavily tested. Please leave a feedback, if you struggle.\n\nIf you would like to prevent certain users from accessing your page, you can register a policy:\n\n```php\nuse App\\Policies\\JobMonitorPolicy;\nuse Moox\\Jobs\\Models\\FailedJob;\nuse Moox\\Jobs\\Models\\JobBatch;\nuse Moox\\Jobs\\Models\\JobMonitor;\n\nclass AuthServiceProvider extends ServiceProvider\n{\n\tprotected $policies = [\n\t\tJobManager::class =\u003e JobManagerPolicy::class,\n\t\tFailedJob::class =\u003e FailedJobPolicy::class,\n\t\tJobBatch::class  =\u003e JobBatchPolicy::class,\n\t];\n}\n```\n\n```php\nnamespace App\\Policies;\n\nuse App\\Models\\User;\nuse Illuminate\\Auth\\Access\\HandlesAuthorization;\n\nclass FailedJobPolicy\n{\n\tuse HandlesAuthorization;\n\n\tpublic function viewAny(User $user): bool\n\t{\n\t\treturn $user-\u003ecan('manage_failed_jobs');\n\t}\n}\n```\n\nsame for FailedJobPolicy and JobBatchPolicy.\n\nThis will prevent the navigation item(s) from being registered.\n\n## Scaling\n\nWhile Laravels queue system and Laravel Horizon are made for spawning (specially batches) across multiple servers, Moox Jobs is not fully prepared for this kind of usage. The core strength of Moox Jobs is the Filament integration and the possibility to manage Jobs running on a non-Redis driver, not managing enterprise server farms.\n\nBesides this, Moox Jobs is tested managing thousands of jobs per hour or millions of jobs per month.\n\n![screenshot-batches](screenshot/jobs-scale.jpg)\n\n## Limitations\n\nMoox Jobs is the perfect fit for the database queue driver. It runs fine on shared hostings and provides a job monitor, pending jobs, failed jobs and the possibility to retry failed jobs, where other Laravel packages like Horizon do not fit.\n\nThe job monitor and failed jobs are also working with Redis, SQS and Beanstalkd, but it does not show waiting jobs and job batches. For Redis we recommend using [Laravel Horizon](https://horizon.laravel.com), for Amazon SQS the AWS Dashboard. The solutions for Beanstalkd seem outdated, but you might give [Laravel Beanstalkd Admin UI](https://github.com/Dionera/laravel-beanstalkd-admin-ui) a try.\n\nAnother thing is using the Sync driver. As the Sync driver in Laravel is intended for development and testing, it executes jobs immediately (synchronously) and does not utilize queues. Therefore, it doesn't use the failed_jobs, jobs, or job_batches tables. Jobs are executed immediately within the same request lifecycle, so there's no queuing or storing of jobs. If a job fails, it's handled immediately within the execution context, not logged in the failed_jobs table. Jobs running with the sync driver may appear as running jobs and stay running forever, even if they are already completed or failed.\n\nWe plan to extend support for all queue drivers in the future. Watch the changelog.\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Roadmap\n\nAs there are many parts (plugins) of Moox that need to be developed, there is no ETA on the following ... let's call them ideas.\n\n### Stability\n\n-   [ ] Enable Logging with Moox Audit, extend demojob and others\n-   [ ] Cleanup, Pruning, Detention (and config / docs for that) - https://github.com/croustibat/filament-jobs-monitor/commit/4616bb4b2f82d542cbbfe88d5143c9c43ec5196b\n-   [ ] Improve Batches, see https://laravel.com/docs/10.x/queues#inspecting-batches and https://cosme.dev/post/how-to-handle-longrunning-jobs-in-laravel\n-   [ ] Auto-handle the never-ending Jobs running with the sync driver\n-   [ ] Maybe there is an easy way to support Jobs waiting with Redis?\n\n#### UX\n\n-   [ ] Create a nicer UI (Charts, Apex?) and Dashboard (the Monitor)\n-   [ ] Test progress bars\n-   [ ] Instead of delete, it is better to Cancel jobs, mark them as Cancelled\n-   [ ] Distinct between Failed (retry) and finally Failed or show retries left (like attempts show, but more obvious)\n-   [ ] Improve Batches (Partly failing / non failing, see if job belongs to a batch, click-filter the jobs of a batch)\n-   [ ] Failed job resource does not show the job name\n-   [ ] Add filters and simplify usage\n-   [ ] Configuration UX, in Navigation\n\n### Notifications\n\n-   [ ] Notifications / Mailables for failed jobs and daily stats\n\n### Redis\n\n-   [ ] Improve the support for Redis\n-   [ ] Add \"soft\" dependencies to installer (Horizon or Predis?)\n\n### Queue Worker and Supervisor\n\n-   [ ] Improve the support for queue workers and Supervisor\n\n### SQS\n\n-   [ ] Improve the support for Amazon SQS or document\n-   [ ] Add \"soft\" dependencies to installer (AWS SDK for PHP)\n\n### Beanstalkd\n\n-   [ ] Improve the support for Beanstalkd or document\n\n### API, Scheduler, CRON\n\n-   [ ] API\n-   [ ] Scheduler (maybe an additional plugin)\n-   [ ] CRON (maybe an additional plugin)\n\n## Contribute\n\nWe welcome every contribution! It would be awesome, if you:\n\n-   Create an Issue in this Repo that contains information about the problem or idea. We'll reply within a couple of days.\n-   Create a Pull Request in the [Monorepo](https://github.com/mooxphp/moox). Please do not PR to our read-only repos, they are not prepared for code changes. Only the monorepo has quality gates and automated tests.\n-   Translate Moox using [Weblate](https://hosted.weblate.org/engage/moox/).\n-   Tell other people about Moox or link to us.\n-   Consider a [donation or sponsorship](https://github.com/sponsors/mooxphp).\n\n## Testing\n\nMoox Jobs has currently no fully automated tests (besides Laravel Pint, PHPStan and Codacy as Quality Gates), but we are on the way to automate testing. We need two kind of tests:\n\n1. The install and update commands\n2. The installed application itself\n\nand there are some things to consider:\n\n-   Is Filament already installed or not? Our installer provides auto-installation including Filament.\n-   Is there data to migrate? Our updater migrates existing data and needs demo data for this.\n-   It is important to test different platforms (Linux, Mac, Windows), environments (Forge-Server, Shared Hosts, Local development) and queue drivers (Redis, Database, Sync, SQS, Beanstalkd)\n\n### Test installation\n\nThis installation runs for a few hours on Forge, Vapor, Shared Hosting, Mac and Windows:\n\n```bash\ncomposer create-project laravel/laravel moox-test\ncd moox-test\nmysqladmin -u root -p create moox-test\ncomposer require filament/filament\nphp artisan filament:install --panels\nphp artisan make:filament-user\ncomposer require moox/jobs\nphp artisan mooxjobs:install\nmkdir monorepo\ncd monorepo\ngit clone https://github.com/mooxphp/moox\ncp app/Jobs/* ../app/Jobs/\ncp app/Console/Commands/* ../app/Console/Commands/\ncp app/Console/kernel.php ../app/Console/kernel.php\n# final steps depend on the target system\ncomposer require laravel/horizon # Forge only\nphp artisan queue:work\nphp artisan schedule:work\n```\n\n### Test the update\n\n```bash\ncomposer create-project laravel/laravel moox-test\ncd moox-test\nmysqladmin -u root -p create moox-test\ncomposer require filament/filament\nphp artisan filament:install --panels\nphp artisan make:filament-user\ncomposer require moox/jobs:2.0.9\nphp artisan mooxjobs:install\nmkdir monorepo\ncd monorepo\ngit clone https://github.com/mooxphp/moox\nmysql -u root -p moox-test \u003c database/sql/jobs/v2/failed_jobs.sql\nmysql -u root -p moox-test \u003c database/sql/jobs/v2/job_batches.sql\nmysql -u root -p moox-test \u003c database/sql/jobs/v2/job_manager.sql\nmysql -u root -p moox-test \u003c database/sql/jobs/v2/jobs.sql\ncd ..\ncomposer require moox/jobs:3.0\ncomposer update\nphp artisan mooxjobs:update\n```\n\n### Test installation with Filament install\n\n```bash\ncomposer create-project laravel/laravel moox-test\ncd moox-test\nmysqladmin -u root -p create moox-test\ncomposer require filament/filament\ncomposer require moox/jobs\nphp artisan mooxjobs:install\n```\n\n### Test installation with Filament require\n\n```bash\ncomposer create-project laravel/laravel moox-test\ncd moox-test\nmysqladmin -u root -p create moox-test\ncomposer require moox/jobs\nphp artisan mooxjobs:install\n```\n\n### Cleanup after testing\n\n```bash\nmysql -u root -p drop database moox-test\ncd ..\nrm -Rf moox-test\n```\n\n## Sponsors\n\nThe initial development of Moox was sponsored by [heco gmbh, Germany](https://heco.de). A huge thank you for investing in Open Source!\n\nIf you use this plugin, please consider a small donation to keep this project under maintenance. Especially if it is a commercial project, it is pretty easy to calculate. A few bucks for a developer to build a great product or a hungry developer that produces bugs or - the worst case - needs to abandon the project. Yes, we are happy about every little sunshine in our wallet ;-)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n## Credits\n\nThis Filament Plugin is heavily inspired (uses concept and / or code) from:\n\n-   https://github.com/croustibat/filament-jobs-monitor\n-   https://gitlab.com/amvisor/filament-failed-jobs\n\nBoth under MIT License.\nA BIG thank you!!!\nto the authors.\n","funding_links":["https://github.com/sponsors/mooxphp"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmooxphp%2Fjobs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmooxphp%2Fjobs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmooxphp%2Fjobs/lists"}