umanit/easyadmin-tree-bundle
Umanit EasyAdmin Tree Bundle adds hierarchical tree views to Symfony EasyAdmin. Display parent-child entities as an expandable tree, reorder nodes with drag and drop, and manage nested records directly in your admin backend. Ideal for categories, pages, menus, and other self-referencing entities.
Architecture fit. Despite the brief framing, this is not a Laravel package — it is a Symfony bundle (umanit/easyadmin-tree-bundle) that extends EasyAdmin's CRUD controllers to render and manipulate hierarchical entities (category trees). It assumes Symfony's bundle registration model, Doctrine ORM entities, and EasyAdmin 4.x controller/field conventions. If the target codebase is Laravel, there is no adapter path beyond reimplementing the same UX (nested-set trait like kalnoy/nestedset plus a custom admin screen). If the target is Symfony + EasyAdmin, the bundle is architecturally shallow and additive — it sits on top of AbstractCrudController and does not alter core framework behavior, which keeps blast radius small.
Integration feasibility. Mechanically straightforward: Composer require, register in config/bundles.php, extend the tree CRUD controller, declare the tree field in configureFields(), and ensure the bundle's JS/CSS assets are published or wired into the asset pipeline (Webpack Encore or AssetMapper). Real effort is not code volume but version alignment — the bundle must match the hosting app's EasyAdmin minor version, and the entity must already model hierarchy (adjacency list or nested set).
Technical risk. This is the dominant concern. 23 stars, a single-maintainer profile, and a last release of 2022-10-28 mean the package has not tracked EasyAdmin's evolution (field-configuration API changes, asset/Stimulus rework, Symfony 6.4/7.x deprecations). Dependency rot, not feature gaps, is the failure vector. There is no evidence of a security-review process, and community support is best-effort only. Treat it as sample code you adopt rather than a vendor-supported dependency.
Key questions.
Stack fit. Green-light only for Symfony 5.4/6.x + Doctrine ORM + EasyAdmin 4.x applications where category hierarchies are an admin-side convenience, not a core domain capability. For Laravel shops, reject the package and scope an equivalent: nested-set trait on the model, a Livewire/Filament or Nova tree view, and a reorder endpoint. Same product outcome, no orphaned dependency.
Migration path. Do not retrofit into a live admin. Spike on a branch: install the bundle against the app's exact EasyAdmin version, build one tree CRUD for a real entity, and exercise create/move/delete end to end. If the spike passes, vendor the package (fork under our org, tag an internal version), because upstream release cadence cannot be relied on. If it fails on version constraints, the fork-and-patch path is usually 1–3 days — cheaper than rebuilding the UI, but only if the tree schema already exists.
Compatibility. Verify PHP constraint, Symfony constraint, EasyAdmin constraint, and the Doctrine tree extension in use. The 2022 release date makes EasyAdmin 4.4-era compatibility most likely; later 4.x lines changed field and asset APIs. Check that the front-end assets build under the app's current pipeline — this is the most common silent breakage.
Sequencing.
Maintenance. Budget ongoing internal ownership: roughly 2–4 engineer-days per quarter to track EasyAdmin and Symfony upgrades, plus ad-hoc fixes. This is a fork-in-all-but-name; plan the repo, CI, and a named maintainer before adoption.
Support. No SLA, no vendor, stale issue tracker. Escalation is internal. That is acceptable for an internal admin tool and unacceptable anywhere the tree drives customer-facing navigation.
Scaling. Tree reads are cheap; reordering writes are the cost center. Nested-set updates touch multiple rows per move and must be transactional. Comfortable to roughly 10k nodes with drag-and-drop; beyond that, expect slow saves and consider lazy-loaded subtrees or a dedicated ordering service. Full-tree client-side rendering also degrades on very large catalogs.
Failure modes.
Ramp-up. A Symfony developer already fluent in EasyAdmin needs 1–2 days to be productive, most of it spent reading bundle internals to understand the tree contract. A developer new to EasyAdmin needs 3–5 days, and should not be the sole owner. Document the tree schema, the reorder transaction boundary, and the fork/upgrade procedure as part of the adoption deliverable — those three artifacts are what keep this from becoming tribal knowledge.
How can I help you explore Laravel packages today?