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

Datatable Laravel Package

openskill/datatable

OpenSkill Datatable is a Laravel package for building server-side data tables from Eloquent or query builder sources, with column formatting, search, sorting, filtering, pagination, and AJAX-ready responses for flexible admin interfaces.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for admin/back-office tables. Any roadmap item that involves a "list view with search, sort, and paging over a large dataset" is a candidate. The package's modular adapter design means one server-side implementation can feed multiple client table plugins (DataTables, and similar), so it maps directly to the decision "do we standardize our table contract once, or let each screen reinvent it?"
  • API contract standardization. Because it decouples the server response shape from the client plugin, it supports a decision to define an internal "table request/response" contract that survives frontend churn — useful when the frontend framework is not yet settled or is mid-migration.
  • Legacy maintenance vs. rewrite. For a product still on Laravel 5, this is a concrete option in the "keep the lights on cheaply" bucket: adopt/fork for existing screens rather than re-platform an entire admin area for cosmetic table features.
  • Scope triage for new features. It is a strong signal of what not to build: server-side pagination, column-level filtering, and sort whitelisting are commodity concerns. Product should not be spending engineering cycles here unless the differentiator is genuinely in the query/permission layer.
  • Data-access governance. Centralizing table queries in one package layer creates a natural chokepoint for row-level authorization, audit logging, and rate limiting on expensive list endpoints — a decision that is much harder to make consistently when every controller hand-rolls its own query.
  • Use cases it fits well: internal ops dashboards, CRM-style record lists, audit/event logs, report browsers, any screen where the dataset is too large to ship to the browser and the columns are known server-side.

When to Consider This Package

Consider it when:

  • You have an existing Laravel 5.x application and a working admin surface you need to extend, not rewrite.
  • You need plugin-agnostic server-side table handling — i.e., you are not certain which client-side table library will win, or you support more than one.
  • The table features you need are commodity: pagination, multi-column sort, per-column filtering, search. No grouping, pivoting, export pipelines, or server-computed aggregates.
  • You have in-house PHP capacity to fork and maintain it. Treat this as a code sample to own, not a dependency to consume.
  • The blast radius is internal and low-privilege — back-office tooling rather than a customer-facing or compliance-sensitive surface.

Look elsewhere when:

  • You are starting a new build, or you are on Laravel 8+ / PHP 8+. The last release was January 2016; there is no upgrade path, no security patching, and no compatibility guarantee with modern framework versions.
  • You need active maintenance: CVE response, PHP version support, framework upgrades. A seven-plus-year-old package with ~52 stars is a single-maintainer risk with no succession plan.
  • Your frontend is Livewire, Inertia, or a SPA with a typed API client. Modern equivalents handle the request/response contract as a first-class concern, and you would be swimming against the package's assumptions.
  • You need advanced table semantics — composite keys, nested relations, cursor pagination, exported snapshots, or column-level permissioning.
  • The cost of a one-time internal implementation is genuinely lower than the cost of adopting and owning a stale dependency. For a focused table contract, that is often a few hundred lines — a real alternative worth pricing before committing.
  • Recommendation: the honest framing is evaluate as a reference architecture, not as a dependency. Read the adapter pattern, borrow the contract, and rebuild it on your current stack. Adoption as-is should require an explicit owner and an exit plan.

How to Pitch It (Stakeholders)

To executives (one paragraph): This is a small, MIT-licensed Laravel package that handles the server side of data tables — paging, sorting, and filtering — in a way that is decoupled from whichever table widget the frontend uses. Its strategic value is not the code itself but the pattern: it shows how to define a stable internal contract for "give me a filtered page of records," so we stop rebuilding that logic on every admin screen and stop coupling our backend to a specific frontend library. The caveat is material: it was last released in 2016, targets Laravel 5, and has no active maintainer. I recommend we treat it as a design reference, not a production dependency, unless we are supporting an existing Laravel 5 surface where the cost of adoption is near zero. Decision required: fund a small, owned internal table layer (~1–2 engineer-weeks) rather than inherit a stale package we would have to fork anyway.

To engineering: The adapter model is the interesting part — a normalized table request/response contract with per-plugin serializers. It saves you from reimplementing pagination, sort whitelisting, and filter parsing per controller, and it gives us one place to enforce authorization and query cost limits. But assume you own the code the moment you install it: no PHP 8 or Laravel 8+ support, no security response, and no upstream to lean on. If we adopt, it needs a named owner, a fork in our org, and a written exit plan. If we don't, treat the repo as a specification and spend the week building the same contract against our current stack — same benefit, no orphaned 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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource