{"id":23934185,"url":"https://github.com/42coders/workflows","last_synced_at":"2026-01-11T16:02:16.186Z","repository":{"id":38296979,"uuid":"295739465","full_name":"42coders/workflows","owner":"42coders","description":"The Workflow Package add Drag \u0026 Drop Workflows to your Laravel Application.","archived":false,"fork":false,"pushed_at":"2025-03-09T04:01:31.000Z","size":3515,"stargazers_count":261,"open_issues_count":6,"forks_count":67,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-10-11T04:25:09.355Z","etag":null,"topics":["automatisation","hacktoberfest","laravel","php","workflows"],"latest_commit_sha":null,"homepage":"https://workflows.42coders.com","language":"JavaScript","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/42coders.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2020-09-15T13:36:45.000Z","updated_at":"2025-06-23T11:38:50.000Z","dependencies_parsed_at":"2022-09-08T08:51:19.107Z","dependency_job_id":"e33bd383-2862-424e-b4c0-b4042af043fb","html_url":"https://github.com/42coders/workflows","commit_stats":{"total_commits":88,"total_committers":12,"mean_commits":7.333333333333333,"dds":0.2272727272727273,"last_synced_commit":"2c781efdb3d3ae98717679606fa71e46c6e0df25"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/42coders/workflows","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42coders%2Fworkflows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42coders%2Fworkflows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42coders%2Fworkflows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42coders%2Fworkflows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/42coders","download_url":"https://codeload.github.com/42coders/workflows/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42coders%2Fworkflows/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28312152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: 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":["automatisation","hacktoberfest","laravel","php","workflows"],"created_at":"2025-01-06T00:30:21.409Z","updated_at":"2026-01-11T16:02:16.164Z","avatar_url":"https://github.com/42coders.png","language":"JavaScript","funding_links":[],"categories":["Building"],"sub_categories":["Workflows"],"readme":"# Workflows add Drag \u0026 Drop automation's to your Laravel application.\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/the42coders/workflows.svg?style=flat-square)](https://packagist.org/packages/the42coders/workflows)\n[![Build Status](https://img.shields.io/travis/42coders/workflows/master.svg?style=flat-square)](https://travis-ci.org/42coders/workflows)\n[![Quality Score](https://github.styleci.io/repos/295739465/shield)](https://github.styleci.io/repos/295739465/shield)\n[![Total Downloads](https://img.shields.io/packagist/dt/the42coders/workflows.svg?style=flat-square)](https://packagist.org/packages/the42coders/workflows)\n\n![Logo](https://github.com/42coders/workflows/blob/master/resources/img/42workflows.png?raw=true)\n\nThe Workflow Package adds Drag \u0026 Drop Workflows to your Laravel Application. A Workflow consists of Triggers and Tasks. \nThe Trigger is responsible for starting a Workflow. The Tasks are single nodes of code execution. \nThe package comes with some handy tasks bundled, but you can easily write your own as well.\n\n![Screenshot](resources/img/workflow_concept.png)\n\nIf you are interested in news and updates \n- Follow me on [Twitter](https://twitter.com/gwagwagwa) \u0026\u0026 || register to our [Newsletter](https://workflows.42coders.com)\n\n[Video Tutorial](http://www.youtube.com/watch?v=J-fplZGlTZI \"Short Introduction Video\")\n\n[![Alt text](https://img.youtube.com/vi/J-fplZGlTZI/mqdefault.jpg)](https://www.youtube.com/watch?v=J-fplZGlTZI)\n\n## Installation\n\nYou can install the package via composer:\n\n```bash\ncomposer require the42coders/workflows\n```\n\nYou need to register the routes to your web.php routes File as well.\nSince the Workflow Package is very powerful make sure to secure the routes with whatever authentication\nyou use in the rest of your app. \n\n```php\nRoute::group(['middleware' =\u003e ['auth']], function () {\n    \\the42coders\\Workflows\\Workflows::routes();\n});\n```\n\nYou need to publish the assets of the Package\n\n```bash\nphp artisan vendor:publish --provider=\"the42coders\\Workflows\\WorkflowsServiceProvider\"  --tag=assets  \n```\n\nOther publishable Contents are\n\nconfig\n\n```bash\nphp artisan vendor:publish --provider=\"the42coders\\Workflows\\WorkflowsServiceProvider\"  --tag=config  \n```\n\nlanguage\n\n```bash\nphp artisan vendor:publish --provider=\"the42coders\\Workflows\\WorkflowsServiceProvider\"  --tag=lang  \n```\n\nviews\n\n```bash\nphp artisan vendor:publish --provider=\"the42coders\\Workflows\\WorkflowsServiceProvider\"  --tag=views  \n```\n\n## Usage\n\nThe Workflow Package is working out of the Box in your Laravel application. Just go to the route /workflows \nto get started.\n\n\n### Workflows\n\nA Workflow is gets started by a Trigger and then executes the Tasks in the Order you set them. \nTo pass information between the Tasks we have the DataBus. \n\n### Triggers\n\nA Trigger is the Starting Point and defines how a Workflow gets called. More Triggers coming soon.\n\n#### ObserverTrigger\n\nThe Observer Trigger can listen to Eloquent Model Events and will then pass the Model which triggered the Event to the \nWorkflow.\n\nTo make it Work add the WorkflowObservable to your Eloquent Model. \n\n``` php\n use WorkflowObservable;\n```\n\n#### ButtonTrigger\n\nThe Button Trigger is able to render a button in your \"frontend\" and Execute a Workflow based by a click on it. \nButtonTrigger also accept an Model which they pass to the Workflow.\n\nYou can influence the buttons by adding your own classes or styles directly to each ButtonTrigger.\nAlso you can publish the blade and change it according to your needs.\n\nYou have multiple ways of rendering ButtonTrigger.\n\n##### ByName\n``` php\n {!! the42coders\\Workflows\\Triggers\\ButtonTrigger::renderButtonByName('name', $model) !!}\n```\n\n##### ByWorkflowId\n``` php\n {!! the42coders\\Workflows\\Triggers\\ButtonTrigger::renderButtonByWorkflowId(workflow_id, $model) !!}\n```\n\n##### ByCategory\nThis will return all Triggers from the Category.\n\n``` php\n {!! the42coders\\Workflows\\Triggers\\ButtonTrigger::renderButtonsByCategory('categoryName', $model) !!}\n```\n\n\n### Tasks\n\nA Task is a single code execution Node in the Workflow. \n\nTask | Description\n---- | -----------\nChangeModel | Changes an Eloquent Model (Its not saving the changes to the DB)\nDomPDF | The DomPDF Task offers you a way to generate a PDF from HTML and put it to the DataBus (Works great with the HtmlInput Task).\nExecute | The Execute Task offers you to execute Shell Commands and is able to push the output of them to the DataBus.\nHtmlInput | The HtmlInput Task offers you a Trix Input Field which is able to render Blade. You can put in placeholders for dynamic content in two Ways. From the Model passed through the Workflow or from the DataBus.\nHttpStatus | The HttpStatus offers you a way to receive the Http Status of a given URL.\nPregReplace | The PregReplace Task offers you a way to to a preg replace on a Value from the Model or a DataBus Variable.\nLoadModel | Loads an Eloquent Model from the DB. You can provide the Class and the id.\nSaveFile | The SaveFile Task allows you to save Data to a File. Works easily with your registered Storage defines.\nSaveModel | Saves an Eloquent Model.\nSendMail | The SendMail Task allows you to send a Mail. You can pass the Content and Attachments to it. (Works great with HtmlInput and DomPDF) \nSendSlackMessage | This Task let you send a Slack Message. Please read the Section about Slack Notifications to make your app ready too use this. \n\n#### SendSlackMessage\n\nTo send Slack messages you need to follow this 3 points.\n1. You need to install Slack notifications [Laravel Slack Documentation](https://laravel.com/docs/8.x/notifications#slack-notifications)\n2. You need to set up an incoming Slack Webhook [Slack Documentation](https://api.slack.com/messaging/webhooks)\n3. Set the WebhookUrl to your env file with WORKFLOW_SLACK_CHANNEL=YourSlackWebhookUrl\n\n### DataBus\n\nThe DataBus is a way to pass information between the single Tasks. This keeps the Tasks independent of each other.\n\nResource | Description\n---- | -----------\nValueResource | The Value Resource is the simplest Resource. You can just write your Data in an input field.\nConfigResource | The Config Resource lets you access values from your Config Files.\nModelResource | The ModelResource lets you access the Data from the passed Eloquent Model.\nDataBusResource | The DataBusResource lets you access the Data from the DataBus. This means all values which got set by a previous Task are access able here.\n\n\n\n\n### Testing\n\n``` bash\ncomposer test\n```\n\n### Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information about what has changed recently.\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n### Security\n\nIf you discover any security related issues, please email max@42coders.com instead of using the issue tracker.\n\n## Credits\n\n- [Max Hutschenreiter](https://github.com/42coders)\n- [All Contributors](../../contributors)\n- jerosoler for [Drawflow](https://github.com/jerosoler/Drawflow)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n## Laravel Package Boilerplate\n\nThis package was generated using the [Laravel Package Boilerplate](https://laravelpackageboilerplate.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42coders%2Fworkflows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F42coders%2Fworkflows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42coders%2Fworkflows/lists"}