netbull/awesome-filter-bundle
Netbull AwesomeFilterBundle is a Symfony bundle that adds reusable filter types for building flexible, query-driven filter forms. Simplify filtering logic in your admin panels and listings with configurable, ready-to-use filters that plug into your existing Symfony stack.
Stack premise is wrong, and that's the first finding. netbull/AwesomeFilterBundle is a Symfony bundle, not a Laravel package. The *Bundle suffix, the netbull vendor namespace, and the bundle's integration surface (service container config tree, Doctrine bridge) all point to Symfony's kernel/DI model. Laravel has no concept of a bundle, no config/packages/*.yaml, and no autodiscovery hook this would register against. If the stated target stack is Laravel, evaluation stops here — there is no "integration," only a rewrite. Everything below assumes the actual target is Symfony.
Architecture fit (Symfony assumption): Filter bundles of this shape typically sit between Symfony Forms (filter UI) and Doctrine ORM (query construction), which is a legitimate seam — filtering logic is exactly the kind of cross-cutting concern teams re-implement badly. Architecturally it is plausible. Practically, it introduces a third-party abstraction over QueryBuilder that owns your query semantics. That is a high-blast-radius dependency for a component with zero dependents.
Integration feasibility: low-to-moderate. The package is installable, but adoption risk is dominated by unknowns rather than by anything measurable in the signal set:
QueryBuilder/Expr behavior and removed deprecated APIs. A filter builder written against ORM 2 will fail at runtime, not at install time.Technical risk: high.
Key questions to put to the maintainer or source:
Stack fit. Viable only on Symfony + Doctrine. On Laravel: reject. On Symfony with a non-Doctrine persistence layer (API Platform custom providers, Elasticsearch, raw DBAL): reject — the value proposition is Doctrine query construction.
License path before technical path. Two acceptable outcomes: (a) legal clears AGPL for this specific deployment shape, or (b) the vendor offers a permissive/commercial license. If neither, the correct decision is to build a small in-house filter layer — the domain surface here is narrow enough that a bespoke FilterCollection → QueryBuilder implementation is a few days of work and carries none of the legal or bus-factor risk.
Compatibility gates. Pin Symfony LTS, pin Doctrine ORM major, and verify both against the bundle's composer.json constraints plus a read of its test matrix. A green composer require proves nothing about ORM 3 runtime behavior.
Migration path, if approved. Do not call the bundle's API from controllers or repositories directly. Define a narrow internal interface — e.g. FilterableQuery::apply(FilterSet $filters) — and implement it with the bundle behind an adapter. This buys three things: a one-file swap if the package is abandoned, a test seam that doesn't require booting the bundle, and containment of any attribute-based config so entity classes stay clean. Migrate one low-risk list endpoint first, compare emitted SQL against the existing hand-rolled query, then expand.
Sequencing.
EXPLAIN diff against current implementation.Maintenance: you will own this. Zero dependents means no upstream community absorbing bugs, no Stack Overflow corpus, no third-party tutorials. Expect to vendor or fork within 12–18 months. Budget for that explicitly; it changes the true cost from "one composer dependency" to "a small internal library with an external origin."
Support. No commercial support, no SLA, no security disclosure policy observed. A vulnerability in the filter path — the exact path that touches user input and database queries — has no coordinated disclosure channel. For anything handling multi-tenant data, that is a material gap.
Scaling. Query-construction layers fail at scale in characteristic ways: generated joins that bypass indexes, filter combinations that produce cartesian products on relation filtering, and N+1 when relation filters trigger lazy hydration. None of this is visible in a dev dataset. Mitigations: log every generated DQL in staging, run EXPLAIN against production-shaped data for the top filter combinations, and cap filter depth/complexity at the API boundary rather than trusting the UI.
Failure modes, ranked.
Ramp-up. For a Symfony-fluent engineer, low-to-moderate, but the onboarding cost is "read the source," not "read the docs." Assume documentation quality tracks adoption — at 0 stars, expect a README and little else. The adapter pattern from the integration section is what keeps ramp-up cost from being paid twice.
Verdict. The opportunity score of ~39 reflects an uncalibrated signal set — with 0 stars and 0 dependents there is no evidence base, so the score is closer to a floor than a measurement. The technical case is weak for Laravel (wrong framework entirely) and moderate at best for Symfony. The AGPL license is the deciding factor: if legal will not clear it, stop here and build the ~200-line in-house equivalent. If it will, run the two-day adapter spike before committing.
How can I help you explore Laravel packages today?