dejwcake/craftable
Craftable is an admin panel and CRUD generator for Laravel that scaffolds management screens, forms, and data tables with authentication and permissions built in, so you can ship back-office tools without repetitive boilerplate.
spatie/laravel-permission ^8.3 and aligns with dejwcake/admin-auth 2.1.0. That makes it the control point for a coordinated upgrade of the whole roles/permissions stack — you cannot adopt it on a per-package basis without dragging admin-auth and the underlying permission library along.spatie/laravel-permission) rather than forking authorization primitives, which is the right signal if you are deciding between maintaining in-house role management and adopting this plus its companion. Cost of ownership is concentrated in upstream upgrade cadence, not in bespoke code — that is a favourable buying signal.BackedEnum) becomes possible only after this upgrade lands — worth sequencing that work behind it rather than alongside it.Role / Permission contracts itself (custom role models, tenancy variants, cached role resolution), findByName() / findOrCreate() must widen to BackedEnum|string. This is the single largest hidden cost and needs an explicit audit ticket before you commit a date to stakeholders.phpmd.yml, coverage reported on the pgsql CI job, documented baseline regeneration, MariaDB 12.3 across docker-compose and CI, and AGENTS.md / CLAUDE.md. If you are standardising quality gates or AI-assisted contribution conventions across your PHP estate, this package is a reasonable reference implementation to point other teams at.Adopt (or upgrade to) 2.1.0 when all of the following hold:
spatie/laravel-permission and are willing to move to ^8.3, or you can schedule that move in the same window. Pinning ^7 makes 2.1.0 uninstallable — this is a hard constraint, not a soft preference.dejwcake/admin-auth 2.1.0. The explicit version alignment between the two packages is the strongest argument for taking both together; splitting them invites a resolution conflict and a confusing failure at composer update time.Role / Permission contracts. If that inventory is unknown, the estimate is not credible.Look elsewhere or defer when:
spatie/laravel-permission. The contract-signature change multiplies against your own patches and the upgrade becomes an unbounded piece of work.is_admin flag, no role/permission matrix). A full RBAC package plus its companion is overkill; the upgrade tax recurs with every upstream major.--prefer-source installs and depend on dev files being present in the installed package (custom test harnesses, contract tests run against vendor). The .gitattributes change removes them from dist archives — verify your pipeline does not assume they exist.Assessment of the release itself: low functional risk, moderate operational risk. The package authors did the right thing by shipping a dependency-only minor version rather than smuggling behaviour changes into a major upgrade window, and by aligning versions with the companion package. The residual risk sits entirely in the transitive spatie v7→v8 migration and in any local contract implementations.
To executives — one paragraph: This is a housekeeping release. The package itself is unchanged; it now requires the next major version of the permissions library it sits on, and it lines up with the matching version of our admin-authentication package. There is no new user-facing capability here, and we should not present it as a feature. The reason to do it now is that staying on the old permissions version becomes progressively more expensive the longer we wait, and doing it while the change is still small is materially cheaper than doing it later alongside other work. Cost is a short, bounded engineering task — mainly verifying that any custom role handling in our own code is updated to the new signature — plus a normal regression pass. Recommend scheduling it into the next maintenance window rather than a feature sprint.
To engineering — the practical brief:
spatie/laravel-permission to ^8.3 and dejwcake/admin-auth to 2.1.0, land them in one PR. Do not attempt a partial move.Role / Permission contracts. Widen findByName() and findOrCreate() to BackedEnum|string. This is the only code change we expect to write, and it is the item that sets the schedule.vendor/ to contain package tests and CI configs, the new .gitattributes exclusions will surface as missing files. Prefer dist installs.AGENTS.md / CLAUDE.md. Low effort, decent signal if we are standardising this across packages.How can I help you explore Laravel packages today?