wingu/easyadmin-plus-bundle
EasyAdmin Plus Bundle extends EasyAdmin with extra fields, filters, actions, and UI enhancements for building richer PHP admin panels faster. It offers reusable components and sensible defaults for common backend workflows, reducing boilerplate and keeping configuration simple and maintainable.
Architecture fit — the framework mismatch is the headline finding. Despite being requested as a Laravel/PHP package, wingu/easyadmin-plus-bundle is a Symfony bundle that extends easycorp/easyadmin-bundle. EasyAdmin is a Symfony admin generator built on Twig, Doctrine, and the Symfony DI container; it has no Laravel counterpart and cannot be dropped into a Laravel application. For a Laravel codebase the architecture fit is effectively zero — adopting this would mean standing up a second PHP framework runtime alongside the Laravel app, with its own routing, sessions, auth, and ORM. That is a platform decision, not a package decision, and it should be rejected at the TPM level before any engineering spike.
Package identity is ambiguous and must be resolved first. The composer name (wingu/easyadmin-plus-bundle) does not match the upstream repository (Speicher210/easyadmin-plus-bundle). This is a common pattern for a fork republished under a new vendor namespace, but it means the artifact you install is not provably the artifact in the linked repo. Before anything else, confirm: which repository is the source of truth, whether the fork tracks upstream, what the version constraint history looks like on Packagist, and whether the original is abandoned. An unattributed fork with no release notes is a supply-chain question, not just a code-quality question.
Adoption signals are at the floor. Zero stars, zero dependents, and a composite score of 0. In TPM terms this package has no community validation, no downstream usage to surface integration bugs, and no implicit support contract. The realistic value proposition is narrow: it adds convenience functionality on top of EasyAdmin — typically extra field types, filters, or CRUD actions. That is glue code. Glue code is cheap to write in-house and expensive to inherit from an unmaintained third party, because you absorb the upgrade liability for someone else's convenience wrappers.
Technical risk, ranked:
composer.json and can block framework upgrades across the whole application — a single convenience dependency holding your platform upgrade hostage.Key questions for the requestor:
wingu/easyadmin-plus-bundle a maintained internal fork? If so, who owns it and what is the patch SLA?Stack fit. For a Laravel stack: not applicable, and the correct integration approach is not to integrate. The equivalent capability is already served by first-party Laravel admin tooling — Filament, Laravel Nova, Backpack, or a hand-rolled Blade/Livewire admin — all of which live in the same runtime, share Eloquent models and auth guards, and carry no cross-framework operational overhead. If an admin panel is the actual requirement, that is the decision to make, and this package is a distractor.
For a Symfony stack, the fit is legitimate but should be treated as adopting code you will own, not adopting a dependency.
Migration path (Symfony case).
Compatibility checks before any merge. PHP version range against the host; Symfony version range; EasyAdmin major version match (this is the most common break); Doctrine ORM version; and a composer why-not audit to confirm the package does not pin a transitive dependency the platform needs to move.
Sequencing. Identity verification → feature inventory spike → build-vs-fork decision → fork/vendor → adapter layer → integration tests on the admin routes → documented exit plan. Do not sequence this after a Symfony major upgrade; the package's version constraints will be the thing blocking it.
Maintenance. The dominant cost is not running the code, it is owning the upgrade path. Every EasyAdmin major release becomes a manual porting exercise with no upstream to lean on. Budget it as internal code: someone on the team must be able to read the bundle's source and patch it. If no one can, the dependency is unowned risk sitting in production.
Support. There is no vendor, no SLA, no security disclosure process, and — with zero dependents — no community to have already hit your bug. Support is entirely internal. For an admin UI this is survivable; it would not be for anything on a customer-facing critical path. Confirm with security whether an unpinned, unaudited dependency in an admin surface (which typically has elevated privileges and PII access) is acceptable under your supply-chain policy — often it is not.
Scaling. The bundle itself is not a scaling concern; it is UI composition code. The scaling risk is inherited from EasyAdmin: admin list views with association-heavy fields generate N+1 queries and can degrade sharply as the dataset grows. If this package supplies custom fields, audit each one's query behavior before it reaches a large table. Also note that a second framework runtime (in the Laravel scenario) means a second deployment unit, second session store, second auth boundary, and second observability target — an operational multiplier far out of proportion to the feature value.
Failure modes to plan for:
Ramp-up. Low for a Symfony developer already fluent in EasyAdmin — the surface is small, measured in hours to days, and the concepts (fields, filters, actions, CRUD controllers) are standard. Effectively infinite for a Laravel-only team, because the prerequisite is learning a second framework. Factor the EasyAdmin fluency check into staffing before committing; if nobody on the team has shipped EasyAdmin, the true cost is framework ramp-up masquerading as package evaluation.
TPM recommendation. Do not adopt for a Laravel stack — the framework mismatch is disqualifying and the correct move is to select a native Laravel admin solution. For a Symfony stack, treat it as a fork-and-own decision scoped to a specific feature inventory, with an explicit exit plan, and prefer replacing its functionality with native EasyAdmin or ~100 lines of in-house code. In both cases, resolve the composer-name/repository mismatch and the abandonment status before the package appears in any composer.json you own.
How can I help you explore Laravel packages today?