Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Data Grid Bundle Laravel Package

kitpages/data-grid-bundle

Kitpages DataGridBundle is a Symfony bundle for building configurable data grids with pagination, sorting, filtering, and customizable columns. It helps turn Doctrine queries or arrays into reusable, template-friendly grid views for admin and listing pages.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor, by construction. kitpages/data-grid-bundle is a Symfony bundle, not a Laravel package. Its architecture assumes Symfony's runtime contract: a Bundle subclass registered in AppKernel/bundles.php, a DependencyInjection/*Extension that loads Resources/config/services.yml, tagged services resolved via the container, Twig for rendering, and Symfony's Request/EventDispatcher for pagination and filter state. Laravel substitutes each of these: ServiceProvider + explicit bindings, no bundle auto-discovery, Blade instead of Twig, and Illuminate\Http\Request. Nothing about the bundle's wiring survives a copy-paste into a Laravel app — you would be manually reconstructing the service graph.

The portable core is the abstraction, not the bundle. The genuinely reusable idea is the bundle's separation of a DataSourceInterface (the thing that yields paginated rows) from a Grid/Column configuration object. That is framework-agnostic in principle and is roughly 300–500 lines. The Doctrine ORMQueryBuilder source, the Twig grid templates, and the DI extension are all Symfony/Doctrine-specific and would be discarded in a Laravel port. Realistically, this repository is a reference design, not a dependency.

Integration feasibility. Low if the goal is "install and use." Composer will likely resolve only against PHP 7.x-era constraints and Symfony 3/4 components; on PHP 8.1+ / Symfony 6+ you should expect constraint conflicts or runtime deprecations. The last release was 2019-03-27 — six years of PHP and Symfony BC breaks, no security patching, and zero dependents on Packagist, meaning no downstream project is validating it in production. Any adoption is effectively a fork.

Technical risk.

  • Abandonment risk: high. Single-maintainer-era package, no releases in six years.
  • Framework impedance: high. Symfony DI, Twig, and Doctrine are all non-native to a Laravel stack.
  • Security surface: medium. Datagrids concentrate risk in dynamic column/sort/filter handling — SQL injection via user-supplied sort keys and filter operators is a classic failure mode, and unaudited 2019 code will not have hardened against modern expectations.
  • Correctness surface: medium. Pagination boundaries, total-count queries, and filter persistence across requests are exactly the areas that rot silently when a package is unmaintained.

Key questions for the team.

  1. What is the actual requirement — a server-rendered admin table, or a reusable grid abstraction for product surfaces? The answer determines whether this package is even the right shape.
  2. Have we evaluated Laravel-native equivalents (Filament tables, Livewire, Orchid, Backpack, or plain Blade + a query-builder paginator) before considering a port?
  3. Would we be porting the DataSourceInterface/Column design, or attempting to run the bundle itself? Only the former is defensible.
  4. Who owns the fork, and is there budget for ongoing maintenance of a package with no upstream?
  5. Does the "opportunity" signal (4.55) reflect a genuine gap in Laravel's grid tooling, or just the sparsity of this package's niche?

Integration Approach

Stack fit: mismatched. A Symfony bundle cannot be a first-class citizen of a Laravel application. There is no bundle auto-registration, no services.yml convention, no Twig-by-default, and no Doctrine-by-default. Every integration point would be hand-built glue. This should be framed to stakeholders as "porting a design," not "adding a dependency" — the effort estimate changes by an order of magnitude.

Migration path — recommend a fork-and-extract, not an install.

  1. Vendor or reimplement the framework-agnostic pieces: the grid definition object, the column definition, the paginator/state object, and the data-source contract.
  2. Replace the Doctrine source with an EloquentDataSource and a QueryBuilderDataSource implementing the same contract, delegating paging to Illuminate\Pagination\LengthAwarePaginator so pagination semantics match the rest of the app (and so we get perPage, page-name, and query-string handling for free).
  3. Replace Twig templates with a Blade component (<x-datagrid :grid="$grid" />) plus a small publishable view layer, so teams can override rendering without touching vendor code.
  4. Replace the DI extension with a ServiceProvider that binds the grid factory and publishes a config file — this is the only piece that maps cleanly onto Laravel idioms.
  5. Do not migrate the bundle's HTTP/event plumbing; use Laravel's request and validation pipeline instead.

Compatibility. Pin the fork to the app's PHP and Laravel versions explicitly rather than inheriting the original Composer constraints, which will drag in obsolete Symfony components. Drop Symfony/Doctrine dependencies entirely where possible; where the fork needs a container, use illuminate/container. Treat the 2019 codebase as MIT-licensed source material, not as a dependency to constrain against.

Sequencing.

  1. Spike (1–2 days): read the source, confirm the abstraction boundary, verify license and attribution obligations under MIT.
  2. Contract definition: write the data-source and column interfaces fresh, informed by — not copied from — the bundle. This is where filter/sort whitelisting and injection safety get designed in.
  3. Eloquent adapter + paginator integration, with tests covering page boundaries, empty results, and multi-column sort.
  4. Blade view layer, initially minimal (table, header, pager) so it is replaceable.
  5. Config + publishing + docs, then a single consumer surface as the pilot.
  6. Only then evaluate whether the abstraction earns a second and third consumer.

Guardrail: gate the whole effort behind a demonstrated second use case. If only one screen needs a grid, a Laravel-native package or plain Blade is strictly cheaper than owning a fork.

Operational Impact

Maintenance. This is the dominant cost. There is no upstream to pull fixes from — the 2019 release is the end of the line. The team inherits full ownership: PHP version bumps, Laravel major-version upgrades, security review of dynamic query construction, and bug triage. Budget it as an internal package, not a third-party dependency: an owner, a changelog, CI, and a versioning policy. The small surface area (~hundreds of lines) makes this tractable, but "tractable" is not "free" — it is a permanent, if modest, tax.

Support. No vendor, no community (77 stars, 0 dependents), no issue activity to mine for known bugs. Internal developers cannot search for answers; every question resolves to reading the fork. Ramp-up for a Laravel developer is low on the domain (grids are familiar) but moderate on the inherited code, because the surviving fragments carry Symfony idioms — service definitions, event-driven state, Twig-era assumptions — that Laravel devs will find unfamiliar and be tempted to half-refactor. Mitigate by rewriting rather than transplanting wherever the code touches the framework.

Scaling. The grid itself is thin — it does not hold state or cache — so scaling is governed entirely by the data source we write. Two risks dominate:

  • Count queries. A LengthAwarePaginator over a large filtered set issues a COUNT(*) per request; on wide filters this is often the slowest part of the page. Plan for an approximate-count or cached-count strategy on high-traffic surfaces.
  • Unbounded sources. Any array-based source materializes the full result set in memory. Restrict the contract to query-backed sources, or enforce a hard cap.
  • N+1 rendering. Column renderers that touch relations will fan out per row; require eager-loading hints in the column definition.

Failure modes to design against.

  • Injection via sort/filter keys — the classic datagrid vulnerability. Enforce a whitelist of sortable/filterable columns at the grid-definition level; never accept raw column names from the request.
  • Silent pagination drift — off-by-one and stale-total bugs when filters change mid-navigation. Cover with tests on page 1, last page, out-of-range page, and zero-result sets.
  • Unstable sort — ordering by a non-unique column produces duplicate/skipped rows across pages. Always append a tiebreaker (primary key) to the order clause.
  • Framework upgrade breakage — because we own the fork, a Laravel major bump is our incident, not a vendor's. Keep the fork's dependency surface minimal so upgrades are mechanical.
  • Attribution loss — MIT requires preserving the copyright notice; ensure the fork carries it, or legal review will surface it later.

Ramp-up. Expect roughly 1–2 weeks for a mid-level Laravel developer to own the fork: a day to read the source, two to three days to build the Eloquent adapter and Blade layer, and the remainder on tests and the injection/ordering hardening above. That is a reasonable investment if the grid abstraction is reused across multiple surfaces. If it serves one admin screen, the honest TPM recommendation is to skip the port entirely: the 2.3/5 score and six-year release gap are accurate signals, and the 4.55 "opportunity" score is best read as "this niche is under-served" — an argument for building a Laravel-native grid internally, using this repository as a design reference, not as a dependency.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment