PHPackages                             atram/laravel-nodeflow - 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. atram/laravel-nodeflow

ActiveLibrary

atram/laravel-nodeflow
======================

Visual workflow builder and durable execution engine for Laravel + Inertia + React apps

v0.0.1(3d ago)00[1 PRs](https://github.com/mikelmao/laravel-nodeflow/pulls)MITPHPPHP ^8.3

Since Aug 22Pushed yesterdayCompare

[ Source](https://github.com/mikelmao/laravel-nodeflow)[ Packagist](https://packagist.org/packages/atram/laravel-nodeflow)[ RSS](/packages/atram-laravel-nodeflow/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (8)Versions (4)Used By (0)

Laravel Nodeflow
================

[](#laravel-nodeflow)

Laravel Nodeflow is a visual workflow builder and durable Laravel execution engine. Applications own tenants, subjects, authorization, trigger sources, and domain nodes; Nodeflow owns graph authoring, immutable publication, idempotent run creation, durable dispatch, and inspection.

> **Experimental:** the package is pre-release. Test every workflow and side effect before production use.

What a flow starts with
-----------------------

[](#what-a-flow-starts-with)

Every publishable graph contains exactly one trigger node. `graph.start` names that trigger, the trigger has no incoming edges, and it has exactly one `started` edge to an executable node. Trigger nodes are declarative and are never executed by the interpreter.

Three trigger node types ship by default:

TypeDriverStarts from`core.trigger.webhook``webhook`An authenticated public webhook request`core.trigger.model_observer``model`An allowlisted Eloquent `created`, `updated`, `deleted`, or `restored` event`core.trigger.laravel_event``event`An allowlisted concrete Laravel event classThe built-in drivers and graph nodes are registered unconditionally. A host registers only explicit, application-owned source classes. This prevents authors from entering arbitrary model names, event names, or service classes.

Install
-------

[](#install)

```
composer require atram/laravel-nodeflow
php artisan nodeflow:install
php artisan nodeflow:install --check
```

Mount authenticated editor routes in a host-owned group. Mount the webhook route separately so its domain, rate limiting, and public middleware are deliberate:

```
use Illuminate\Support\Facades\Route;
use Nodeflow\Nodeflow;

Route::middleware(['web', 'auth'])
    ->prefix('admin/nodeflow')
    ->group(fn () => Nodeflow::routes());

Route::middleware(['api', 'throttle:webhooks'])
    ->domain('hooks.example.com')
    ->group(fn () => Nodeflow::webhookRoutes());
```

Register host trigger sources after Nodeflow's provider has registered the built-in drivers and nodes:

```
public function boot(): void
{
    Nodeflow::registerTriggerSources($this->triggerSources);
}
```

The editor shows an empty-state explanation until a compatible source is registered. Publishing compiles the selected source and routing metadata into an immutable activation pinned to the new flow version.

Extensible by contract
----------------------

[](#extensible-by-contract)

Applications can implement `TriggerSource` for an existing driver, subclass `AbstractTriggerNode` to give an existing driver a new authoring shape, or implement `TriggerDriver` and pair it with a reference trigger node. Register dependencies in driver → node → source order:

```
Nodeflow::registerTriggerDrivers($this->triggerDrivers);
Nodeflow::registerTriggerNodes($this->triggerNodes);
Nodeflow::registerTriggerSources($this->triggerSources);
```

Generate the corresponding starting points with `nodeflow:make-trigger`, `nodeflow:make-trigger-source`, and `nodeflow:make-trigger-driver`.

Documentation
-------------

[](#documentation)

- [Quick start](docs/gitbook/getting-started/quick-start.md)
- [Writing triggers](docs/gitbook/building-automations/writing-triggers.md)
- [Starting runs](docs/gitbook/building-automations/starting-runs.md)
- [Route reference](docs/gitbook/reference/routes.md)
- [Database schema](docs/gitbook/reference/database-schema.md)
- [Testing](docs/gitbook/contributing/testing.md)

Deliberate limits
-----------------

[](#deliberate-limits)

Schedules are not supported. Unsigned webhooks are not supported. Authors cannot enter arbitrary model or event class names. Expression interpolation is not supported. Multiple trigger nodes are not supported. Eloquent query-builder bulk updates are not observed.

License
-------

[](#license)

MIT.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 58.2% of commits — single point of failure

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

Unknown

Total

1

Last Release

3d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1472972?v=4)[mikelmao](/maintainers/mikelmao)[@mikelmao](https://github.com/mikelmao)

---

Top Contributors

[![MichaelAtram](https://avatars.githubusercontent.com/u/250988847?v=4)](https://github.com/MichaelAtram "MichaelAtram (287 commits)")[![mikelmao](https://avatars.githubusercontent.com/u/1472972?v=4)](https://github.com/mikelmao "mikelmao (206 commits)")

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/atram-laravel-nodeflow/health.svg)

```
[![Health](https://phpackages.com/badges/atram-laravel-nodeflow/health.svg)](https://phpackages.com/packages/atram-laravel-nodeflow)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

1.1k4.6M341](/packages/laravel-ai)[illuminate/queue

The Illuminate Queue package.

20433.0M1.9k](/packages/illuminate-queue)[mike-bronner/laravel-model-caching

Automatic caching for Eloquent models.

2.4k161.4k2](/packages/mike-bronner-laravel-model-caching)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

265.2k](/packages/aedart-athenaeum)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45844.8k1](/packages/pressbooks-pressbooks)[forjedio/inertia-table

Backend-driven dynamic tables for Laravel + Inertia.js

272.0k](/packages/forjedio-inertia-table)

PHPackages © 2026

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