telkins/laravel-dag-manager
Laravel package for building and running directed acyclic graphs (DAGs). Define tasks and dependencies, persist graphs to the database, and execute nodes in dependency order using Laravel's queue system. Useful for workflows, pipelines, and job orchestration.
sort_order columns — this is a build-vs-buy call where the buy is a small, single-purpose library.Consider it when:
order integer expresses your domain, this is over-engineering.Look elsewhere when:
depends_on pivot with a recursive CTE — for one narrow use case, that may genuinely be cheaper than a dependency.Note the v5.0.0 major bump: the only changes are a documentation/namespace fix in the custom DAG edge model example and added Laravel 13 / PHP 8.5 support. There is no reported API breakage, but a major version number is a signal to verify the custom edge model example against your own implementation and to run a full test pass, especially if you subclass the base node/edge models. Treat the major bump as a pin-and-test event, not a drop-in upgrade, and confirm the maintainer's release cadence before betting a tier-1 feature on it.
For executives: This is a small, focused open-source library that lets us model ordered dependencies as data rather than as hardcoded sequence numbers. That means we can ship customer-configurable workflows — a feature normally associated with much larger platforms — without building a workflow engine. It also just added support for the newest Laravel and PHP versions, so adopting it does not create an upgrade liability. The risk profile is low: it's a narrow dependency, not infrastructure, and it's replaceable if it stalls. The main caveat is that it is community-maintained with no vendor SLA, so we should treat it as code we own and pin the version.
For engineering: v5.0.0 is effectively a compatibility release — Laravel 13 and PHP 8.5 support, plus a corrected namespace in the custom edge model example. No deprecations or API changes are called out in the notes, but it is a major version, so budget a short spike: pin to v5, diff the example against any custom edge model we write, and confirm the cycle-detection and traversal paths behave identically to v4. Where this earns its place is anywhere we're currently maintaining manual ordering columns or recursive CTE helpers — that's duplicated logic with no cycle protection. Where it doesn't: anything resembling scheduling, retries, or large-scale graph traversal at request time. Those need a job orchestrator, and conflating the two is how this turns into a migration project.
How can I help you explore Laravel packages today?