cammac/nova-workflow
A Laravel Nova package that adds workflow management to your resources: define states, transitions, and approvals, then move models through each stage directly from the Nova UI.
Architecture fit. cammac/nova-workflow is a Laravel Nova resource tool, not a standalone workflow engine. It is designed to attach workflow state and transition controls to Nova resources — i.e., workflow logic lives at the admin-UI layer and is coupled to Nova's internal tool/resource conventions. That is an acceptable fit for back-office approval flows (editorial review, order status, ticket triage) where the primary actor is an internal operator working in Nova. It is a poor fit if workflow is core domain logic that must also be driven from APIs, queues, webhooks, or customer-facing surfaces, because the engine and the presentation layer are not clearly separable and Nova is closed-source.
Integration feasibility. Feasible only inside an existing Laravel + Nova estate, and only after version alignment is confirmed. Nova is a paid, closed-source dependency with its own major-version cadence; the package must be checked against our pinned PHP, Laravel, and Nova majors, and against any package that already owns model state. A one-day sandbox spike in a throwaway Nova app is enough to establish whether tool registration, migrations, and transition endpoints behave as documented.
Technical risk. Elevated for the following reasons:
Key questions to resolve before committing:
composer.json constraints for PHP, Laravel, and Nova, and when was the last commit/release?Stack fit. Adopt only if we are already committed to Laravel + Nova and the workflow scope is genuinely administrative. It does not fit API-first, headless, or multi-tenant-SaaS-with-external-actors architectures. Scope test: if the requirement is a linear set of 3–5 states with one approver, the package likely covers it; if we need parallel branches, guard conditions, SLA timers, delegation, or escalation, we will outgrow it within a quarter and should not start there.
Migration path (recommended, in preference order):
symfony/workflow or spatie/laravel-model-states) and build a small custom Nova field/tool for transition controls. For most teams this is the lower-total-risk option: a maintained engine plus ~1–2 weeks of Nova UI work buys version independence and testability.Compatibility. Verify PHP minor, Laravel major, and Nova major jointly — these three constrain each other. Check published migration and config filenames for table/config-key collisions with our schema. Critically, ensure only one source of truth for state: if a model already has a status column driven by observers or another package, this package will create state drift, and that must be resolved before, not after, rollout.
Sequencing.
Maintenance. Assume in-house ownership from day one. Budget roughly 2–4 engineer-days per quarter for dependency hygiene and Nova upgrade tracking, plus a spike whenever Nova ships a major. If we do not fork, budget reactive firefighting instead — that is the worse trade.
Support. Community-only: GitHub issues, no SLA, no published security policy, no maintainer redundancy. Escalation path is "we fix it." This must be stated explicitly to whoever owns the workflow feature, because a workflow outage blocks operational throughput, not just a nice-to-have screen.
Scaling. Two concerns:
Failure modes to design against:
Ramp-up. One to two days for a Laravel developer already fluent in Nova; roughly a week for a new hire who must also learn Nova's paid-license setup, tool registration, and resource conventions. Because Nova familiarity is the real prerequisite and Nova knowledge is not transferable to other stacks, document the workflow's state model and transition rules independently of the package — that artifact survives any later engine swap.
How can I help you explore Laravel packages today?