guava/filament-nested-resources
Filament Nested Resources adds nested resource routing and management to Filament admin panels. Define parent-child resources, generate nested URLs, and keep breadcrumbs and authorization in sync so related records are created and edited in their parent context.
RelationManager for inline child CRUD; custom routing (what this package replaces); or the plugin where children need first-class pages — their own table, filters, widgets, custom pages, and shareable deep links. Applying it to every parent–child pair adds route and breadcrumb surface nobody asked for.Consider it when:
Project → Task, Course → Lesson).Look elsewhere or defer when:
RelationManager would do — children only need inline management inside the parent, with no independent pages, filters, or deep links.getUrl() parent parameters, global-search URLs, and breadcrumbs across a three-level hierarchy.Executives. This package improves admin usability for hierarchical data and removes custom engineering for nested navigation and CRUD — a real but contained efficiency win, not a core platform bet. It is additive and reversible: adoption happens one resource pair at a time, so cost is priced per pair rather than as a big-bang admin rewrite. Release 1.3.0 is a minor breadcrumb/UX improvement with low upgrade risk. The material caveat is that the package has essentially no downstream adoption signal and a small maintainer pool, so we should adopt through a scoped pilot and hold a fork/vendor contingency if the admin panel becomes business-critical.
Engineering. Use this to standardize nested Filament resources instead of maintaining custom routing and breadcrumb code. Install is quick — Composer, publish config, add the NestedResource trait, declare parent resource and relationship, hide the child from navigation — but the real cost is information architecture and authorization modeling. Every parent–child pair needs a matching Eloquent relationship, and every deep link into a child now carries the parent record, so getUrl() call sites in widgets, notifications, custom actions, and global-search results all need auditing. Plan one to two engineer-days for a first production pair, not one hour. Start with one two-level pair on a staging branch, keep flat child routes live during transition, then expand pair by pair. Note the trap: relationship scoping prevents cross-parent access but is not a policy check — enforce both.
Pilot exit criteria to agree up front: zero 404s across the nested route set after route:clear and re-cache; policy checks verified for all four verbs plus a second-tenant negative test; breadcrumbs render every ancestor as a link and the current record as plain text at three levels; and no N+1 introduced on the nested index (asserted by query count). Document the "when to nest vs. when to use a RelationManager" guideline before rolling out further, and name one engineer accountable for the version pin, the convention doc, and the regression suite.
How can I help you explore Laravel packages today?