PHPackages                             alizharb/flowforge - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. alizharb/flowforge

Abandoned → [https://github.com/AlizHarb/forgepulse](/?search=https%3A%2F%2Fgithub.com%2FAlizHarb%2Fforgepulse)ArchivedLibrary

alizharb/flowforge
==================

A dynamic workflow builder for Laravel.

v1.2.0(5mo ago)4817[1 issues](https://github.com/AlizHarb/forgepulse/issues)MITPHPPHP ^8.3CI passing

Since Nov 25Pushed 5mo agoCompare

[ Source](https://github.com/AlizHarb/forgepulse)[ Packagist](https://packagist.org/packages/alizharb/flowforge)[ Docs](https://github.com/alizharb/forgepulse)[ GitHub Sponsors](https://github.com/alizharb)[ RSS](/packages/alizharb-flowforge/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (14)Versions (5)Used By (0)

ForgePulse
==========

[](#forgepulse)

[![Latest Version on Packagist](https://camo.githubusercontent.com/60a4f9eb804120b16b119db1f5fb52129d009519a073c619ede760a90910714b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616c697a686172622f666f72676570756c73652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alizharb/forgepulse)[![GitHub Tests Action Status](https://camo.githubusercontent.com/b00b919cb901051edf8240769c24e484ab6e60a64efae2b1f3d8c4efc3b4fa14/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f616c697a686172622f666f72676570756c73652f74657374732e796d6c3f6c6162656c3d7465737473)](https://github.com/alizharb/forgepulse/actions?query=workflow%3Atests+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/c70c99190a1a29b3440380950b3543bc930fb6855477b659803b1438d38848f3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616c697a686172622f666f72676570756c73652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alizharb/forgepulse)[![License](https://camo.githubusercontent.com/57761c6b5a98118a842cc7996ca14130ff16d0a5f3d6d65880d4acd38304b544/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f616c697a686172622f666f72676570756c73652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alizharb/forgepulse)

**ForgePulse** is a powerful, production-ready Laravel package for building dynamic workflows with a drag-and-drop interface, conditional branching, and real-time execution tracking.

> **Note**: This project was formerly known as FlowForge. It has been renamed to ForgePulse.

✨ Features
----------

[](#-features)

[**Explore Full Features &amp; Screenshots →**](docs/features.md)

- 🎨 **Drag-and-Drop Workflow Designer** - Visual workflow builder using Livewire 4 and Alpine.js
- 🔀 **Conditional Branching** - Complex if/else rules with 22+ comparison operators (v1.2.0)
- 📜 **Workflow Versioning** - Automatic version tracking with rollback capability (v1.2.0)
- 🎨 **Modern UI** - Glassmorphism toolbar, draggable minimap, keyboard shortcuts (v1.2.0)
- ↩️ **Undo/Redo** - Full state management with ⌘Z/⌘⇧Z support (v1.2.0)
- 🗺️ **Interactive Minimap** - Real-time workflow overview with click navigation (v1.2.0)
- ⌨️ **Keyboard Shortcuts** - Efficient workflow editing with hotkeys (v1.2.0)
- 🌙 **Enhanced Dark Mode** - Beautiful UI with global dark mode support (v1.2.0)
- ⏱️ **Timeout Orchestration** - Configure step timeouts with automatic termination (v1.1.0)
- ⏸️ **Pause/Resume Workflows** - Pause and resume executions mid-flow (v1.1.0)
- 🔄 **Parallel Execution** - Execute multiple steps concurrently (v1.1.0)
- 📅 **Execution Scheduling** - Schedule workflows for future execution (v1.1.0)
- 🌐 **REST API** - Full API for mobile monitoring and integrations (v1.1.0)
- 📋 **Workflow Templates** - Save, load, and reuse workflow configurations
- ⚡ **Real-Time Execution Tracking** - Live monitoring with Livewire reactivity
- 🔗 **Laravel 12 Integration** - Seamless integration with events, jobs, and notifications
- 🔐 **Role-Based Access Control** - Granular permissions for workflow actions
- 🎯 **7 Step Types** - Actions, conditions, delays, notifications, webhooks, events, and jobs
- 📊 **Execution Logging** - Detailed step-by-step execution logs with performance metrics
- 🌍 **Multi-Language** - Built-in support for English, Spanish, French, German, and Arabic (v1.2.0)
- 🚀 **PHP 8.3+ &amp; Laravel 12** - Modern codebase with enums, readonly properties, and attributes
- ✅ **Fully Tested** - Comprehensive test suite with Pest 3

📋 Requirements
--------------

[](#-requirements)

- PHP 8.3, 8.4, or 8.5
- Laravel 12
- Livewire 4

📦 Installation
--------------

[](#-installation)

Install the package via Composer:

```
composer require alizharb/forgepulse
```

Publish the configuration file:

```
php artisan vendor:publish --tag=forgepulse-config
```

Publish and run the migrations:

```
php artisan vendor:publish --tag=forgepulse-migrations
php artisan migrate
```

Optionally, publish the views and assets:

```
php artisan vendor:publish --tag=forgepulse-views
php artisan vendor:publish --tag=forgepulse-assets
php artisan vendor:publish --tag=forgepulse-lang
```

### Asset Inclusion

[](#asset-inclusion)

To ensure the ForgePulse UI renders correctly, you must include the package's CSS file in your application's layout (usually `resources/views/layouts/app.blade.php`):

```

```

🚀 Quick Start
-------------

[](#-quick-start)

### 1. Create a Workflow

[](#1-create-a-workflow)

```
use AlizHarb\ForgePulse\Models\Workflow;
use AlizHarb\ForgePulse\Enums\WorkflowStatus;

$workflow = Workflow::create([
    'name' => 'User Onboarding',
    'description' => 'Automated user onboarding process',
    'status' => WorkflowStatus::ACTIVE,
]);
```

### 2. Add Workflow Steps

[](#2-add-workflow-steps)

```
use AlizHarb\ForgePulse\Enums\StepType;

// Send welcome email
$workflow->steps()->create([
    'name' => 'Send Welcome Email',
    'type' => StepType::NOTIFICATION,
    'position' => 1,
    'configuration' => [
        'notification_class' => \App\Notifications\WelcomeEmail::class,
        'recipients' => ['{{user_id}}'],
    ],
]);

// Wait 1 day
$workflow->steps()->create([
    'name' => 'Wait 24 Hours',
    'type' => StepType::DELAY,
    'position' => 2,
    'configuration' => [
        'seconds' => 86400,
    ],
]);
```

### 3. Execute the Workflow

[](#3-execute-the-workflow)

```
// Execute asynchronously (queued)
$execution = $workflow->execute([
    'user_id' => $user->id,
    'email' => $user->email,
]);

// Execute synchronously
$execution = $workflow->execute(['user_id' => $user->id], async: false);
```

### 4. Use the Visual Builder

[](#4-use-the-visual-builder)

Include the Livewire component in your Blade view:

```

```

[![Workflow Overview](art/overview.png)](art/overview.png)

📚 Documentation
---------------

[](#-documentation)

For comprehensive documentation, visit our [interactive documentation site](https://alizharb.github.io/forgepulse/) or check the `docs/` directory.

### Key Topics

[](#key-topics)

- [Installation Guide](docs/installation.html)
- [Quick Start Tutorial](docs/quick-start.html)
- [API Reference](docs/api-reference.html)
- [Interactive Examples](docs/examples.html)
- [Configuration Reference](docs/configuration.html)

🎯 Step Types
------------

[](#-step-types)

ForgePulse supports 7 step types out of the box:

### Action Step

[](#action-step)

Execute custom action classes:

```
use AlizHarb\ForgePulse\Enums\StepType;

$step = $workflow->steps()->create([
    'type' => StepType::ACTION,
    'configuration' => [
        'action_class' => \App\Actions\ProcessUserData::class,
        'parameters' => ['user_id' => '{{user_id}}'],
    ],
]);
```

### Notification Step

[](#notification-step)

Send Laravel notifications:

```
$step = $workflow->steps()->create([
    'type' => StepType::NOTIFICATION,
    'configuration' => [
        'notification_class' => \App\Notifications\OrderConfirmation::class,
        'recipients' => ['{{user_id}}'],
    ],
]);
```

### Webhook Step

[](#webhook-step)

Make HTTP requests to external services:

```
$step = $workflow->steps()->create([
    'type' => StepType::WEBHOOK,
    'configuration' => [
        'url' => 'https://api.example.com/webhook',
        'method' => 'POST',
        'headers' => ['Authorization' => 'Bearer token'],
        'payload' => ['data' => '{{context}}'],
    ],
]);
```

[See full documentation for all step types →](docs/step-types.html)

🔀 Conditional Branching
-----------------------

[](#-conditional-branching)

Add conditions to steps for dynamic workflow paths:

```
use AlizHarb\ForgePulse\Enums\StepType;

$step->update([
    'conditions' => [
        'operator' => 'and',
        'rules' => [
            ['field' => 'user.role', 'operator' => '==', 'value' => 'premium'],
            ['field' => 'order.total', 'operator' => '>', 'value' => 100],
        ],
    ],
]);
```

### Supported Operators

[](#supported-operators)

**Basic Operators:**

- Equality: `==`, `===`, `!=`, `!==`
- Comparison: `>`, `>=`, ` [
        'operator' => 'and',
        'rules' => [
            ['field' => 'email', 'operator' => 'regex', 'value' => '/^[a-z]+@company\.com$/'],
            ['field' => 'age', 'operator' => 'between', 'value' => [18, 65]],
            ['field' => 'permissions', 'operator' => 'contains_all', 'value' => ['read', 'write']],
        ],
    ],
]);
```

📋 Workflow Templates
--------------------

[](#-workflow-templates)

Save workflows as reusable templates:

```
// Save as template
$template = $workflow->saveAsTemplate('User Onboarding Template');

// Create workflow from template
$newWorkflow = $template->instantiateFromTemplate('New Onboarding');

// Export template to file
$templateManager = app(\AlizHarb\ForgePulse\Services\TemplateManager::class);
$path = $templateManager->export($template);

// Import template from file
$workflow = $templateManager->import($path, 'Imported Workflow');
```

⚡ Real-Time Execution Tracking
------------------------------

[](#-real-time-execution-tracking)

Monitor workflow execution in real-time:

```

```

The tracker automatically polls for updates and displays:

- Execution status and progress
- Step-by-step execution logs
- Performance metrics
- Error messages

⏱️ Timeout Orchestration (v1.1.0)
---------------------------------

[](#️-timeout-orchestration-v110)

Configure timeouts for individual steps to prevent long-running operations:

```
$step->update([
    'timeout' => 30, // seconds
]);
```

If a step exceeds its timeout, it will be automatically terminated and marked as failed. Requires the `pcntl` PHP extension. Gracefully degrades if not available.

⏸️ Pause/Resume Workflows (v1.1.0)
----------------------------------

[](#️-pauseresume-workflows-v110)

Pause and resume workflow executions:

```
// Pause execution
$execution->pause('Waiting for manual approval');

// Resume execution
$execution->resume();

// Check if paused
if ($execution->isPaused()) {
    echo "Paused: " . $execution->pause_reason;
}
```

🔄 Parallel Execution (v1.1.0)
-----------------------------

[](#-parallel-execution-v110)

Execute multiple steps concurrently for improved performance:

```
// Configure steps to run in parallel
$step1->update([
    'execution_mode' => 'parallel',
    'parallel_group' => 'email-notifications',
]);

$step2->update([
    'execution_mode' => 'parallel',
    'parallel_group' => 'email-notifications',
]);

// Both steps will execute concurrently
```

📅 Execution Scheduling (v1.1.0)
-------------------------------

[](#-execution-scheduling-v110)

Schedule workflows for future execution:

```
$execution = $workflow->execute([
    'scheduled_at' => now()->addHours(2),
    'context' => ['user_id' => 123],
]);
```

🌐 REST API (v1.1.0)
-------------------

[](#-rest-api-v110)

ForgePulse provides a full REST API for mobile monitoring and integrations:

```
# List workflows
GET /api/forgepulse/workflows

# Get workflow details
GET /api/forgepulse/workflows/{id}

# List executions
GET /api/forgepulse/executions

# Get execution details
GET /api/forgepulse/executions/{id}

# Pause execution
POST /api/forgepulse/executions/{id}/pause

# Resume execution
POST /api/forgepulse/executions/{id}/resume
```

Configure API settings in `config/forgepulse.php`:

```
'api' => [
    'enabled' => true,
    'middleware' => ['api', 'auth:sanctum'],
],
```

📜 Workflow Versioning (v1.2.0)
------------------------------

[](#-workflow-versioning-v120)

ForgePulse automatically tracks workflow versions, enabling you to view history and rollback changes:

```
// Automatic versioning on save (enabled by default)
$workflow->save(); // Creates version automatically

// Manual version creation
$version = $workflow->createVersion('Before major changes');

// View version history
$versions = $workflow->versions;

// Rollback to a previous version
$workflow->restoreVersion($versionId);

// Compare versions
$latestVersion = $workflow->latestVersion();
$diff = $latestVersion->compare($previousVersion);
```

Configure versioning in `config/forgepulse.php`:

```
'versioning' => [
    'enabled' => true,
    'max_versions' => 50,
    'auto_version_on_save' => true,
    'retention_days' => 90,
],
```

🔔 Events
--------

[](#-events)

ForgePulse dispatches the following events:

- `WorkflowStarted` - When workflow execution begins
- `WorkflowCompleted` - When workflow completes successfully
- `WorkflowFailed` - When workflow execution fails
- `StepExecuted` - After each step execution

Listen to these events in your `EventServiceProvider`:

```
use AlizHarb\ForgePulse\Events\WorkflowCompleted;
use App\Listeners\SendWorkflowCompletionNotification;

protected $listen = [
    WorkflowCompleted::class => [
        SendWorkflowCompletionNotification::class,
    ],
];
```

🌍 Multi-Language Support
------------------------

[](#-multi-language-support)

ForgePulse includes built-in translations for:

- 🇬🇧 English
- 🇪🇸 Spanish
- 🇫🇷 French
- 🇩🇪 German
- 🇸🇦 Arabic (with RTL support)

Set your application locale:

```
app()->setLocale('es'); // Spanish
app()->setLocale('fr'); // French
app()->setLocale('de'); // German
app()->setLocale('ar'); // Arabic
```

⚙️ Configuration
----------------

[](#️-configuration)

The configuration file (`config/forgepulse.php`) allows you to customize:

- Execution settings (timeout, retries, queue)
- Role-based permissions
- Template storage
- Event hooks
- Notification channels
- Caching options
- UI preferences

### Team Integration (Optional)

[](#team-integration-optional)

ForgePulse supports optional team integration. To enable it:

1. Enable teams in `config/forgepulse.php`:

    ```
    'teams' => [
        'enabled' => true,
        'model' => \App\Models\Team::class,
    ],
    ```
2. Ensure your `teams` table exists before running migrations. If enabled, ForgePulse will add a `team_id` foreign key to the `workflows` table.

### Permissions

[](#permissions)

By default, ForgePulse enforces Role-Based Access Control (RBAC). To disable all permission checks (e.g., for local testing or demos), update your configuration:

```
'permissions' => [
    'enabled' => false,
    // ...
],
```

🧪 Testing
---------

[](#-testing)

Run the test suite:

```
composer test
```

Run tests with coverage:

```
composer test:coverage
```

Run static analysis:

```
composer analyse
```

Format code:

```
composer format
```

🔒 Security
----------

[](#-security)

If you discover any security-related issues, please email  instead of using the issue tracker.

👥 Credits
---------

[](#-credits)

- [Ali Harb](https://github.com/AlizHarb)
- [All Contributors](../../contributors)

📄 License
---------

[](#-license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

🤝 Contributing
--------------

[](#-contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

📝 Changelog
-----------

[](#-changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

💖 Support
---------

[](#-support)

If you find this package helpful, please consider:

- ⭐ Starring the repository
- 🐛 Reporting bugs
- 💡 Suggesting new features
- 📖 Improving documentation
- 🔀 Contributing code

---

**Made with ❤️ by [Ali Harb](https://alizharb.com)**

**Release Date:** November 27, 2025 | **Version:** 1.2.0

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance69

Regular maintenance activity

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

172d ago

PHP version history (2 changes)1.0.0PHP ^8.2

v1.1.1PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/aa785764ac84cfd4a3237f3d4a3471ce97b479ac6fa2171a5ea8bf369c2377e5?d=identicon)[AlizHarb](/maintainers/AlizHarb)

---

Tags

laravelautomationworkflowalizharbforgepulse

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/alizharb-flowforge/health.svg)

```
[![Health](https://phpackages.com/badges/alizharb-flowforge/health.svg)](https://phpackages.com/packages/alizharb-flowforge)
```

###  Alternatives

[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k12.1M99](/packages/laravel-pulse)[spatie/laravel-livewire-wizard

Build wizards using Livewire

4061.0M4](/packages/spatie-laravel-livewire-wizard)[api-platform/laravel

API Platform support for Laravel

59126.4k6](/packages/api-platform-laravel)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

116.6k](/packages/tomshaw-electricgrid)[joelwmale/livewire-quill

Easily add QuillJS with image support to any Laravel Livewire component.

1314.0k](/packages/joelwmale-livewire-quill)[a2insights/filament-saas

Filament Saas for A2Insights

161.1k](/packages/a2insights-filament-saas)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
