victorlap/laravel-approvable
Add approval workflows to any Laravel model with victorlap/laravel-approvable. Submit, approve, or reject records via a simple trait, with configurable approvers, status tracking, and query scopes—ideal for content moderation, publishing pipelines, and multi-step sign-offs.
Architecture fit. Version 1.2.0 is a dependency-only release; it ships no functional changes, so the package's architectural role is unchanged. What it does establish is a hard platform contract: PHP ^7.2 and laravel/framework ^5.8|^6.0. For a TPM, that single line is the most consequential fact in this assessment, because it defines the entire envelope of applications this package can be installed into.
Integration feasibility. The constraint is narrow. The caret ranges resolve to >=5.8 <7.0 for the framework and >=7.2 <8.0 for PHP. Any service on Laravel 7.x or later — or on PHP 8.x — cannot install this package without a Composer --ignore-platform-reqs workaround, which trades a clean dependency resolution for an unsupported runtime. Feasibility is therefore high for legacy estates (Laravel 5.8/6.x) and effectively zero for greenfield work.
Technical risk.
<7.0 upper bound is a blocker, not an inconvenience. It must be lifted by the maintainer before this package can participate in any framework modernisation programme.Key questions.
<7.0 ceiling deliberate (unmaintained internals) or incidental (stale composer.json)?Stack fit. Suitable only for applications on Laravel 5.8 or 6.x running PHP 7.2–7.4. It is not a candidate for any service on Laravel 7+, PHP 8+, or a container image built from a current base. A short inventory of candidate services against that matrix should precede any further evaluation effort.
Migration path. Two viable shapes:
There is no migration path onto modern Laravel within this version. Any plan that assumes one is false.
Compatibility. Validate three things before committing: (a) that the target service's composer.lock already satisfies php ^7.2 and laravel/framework ^5.8|^6.0; (b) that no transitive dependency conflicts emerge on composer update; (c) that the package does not rely on framework internals deprecated in 6.x if any forward movement is anticipated.
Sequencing.
Maintenance. This is the dominant cost. Pinning to an EOL PHP and framework line means the package's lifecycle is now the constraint on the host application's lifecycle, not the reverse. Budget for periodic re-evaluation and for an eventual fork or replacement; do not assume upstream will lift the ceiling.
Support. Assume limited or no upstream support until issue-tracker responsiveness is verified. An internal owner must be named, with enough Laravel familiarity to patch a fork if the maintainer is unresponsive. Vendor support obligations cannot realistically be placed on this dependency.
Scaling. The release notes reveal nothing about the package's runtime behaviour, so scaling characteristics are unknown. Any horizontal-scaling, caching, or async-processing assumptions must be validated empirically during the spike rather than inferred. Treat the first deployment as a performance-characterisation exercise.
Failure modes.
--ignore-platform-reqs to unblock a build, producing an untested combination in production.Ramp-up. Low engineering ramp-up (standard Laravel package installation), but non-trivial organisational ramp-up: a security exception for the EOL runtime, an architecture decision record explaining why a legacy-only dependency is being introduced, and a named owner with a review date. If the capability is non-critical, the cheapest path is to skip this package entirely rather than carry that overhead.
How can I help you explore Laravel packages today?