eonx-com/easy-pagination
Easy Pagination is a lightweight Laravel/PHP package that simplifies paginating query results and collections. It offers a clean, consistent API for building paginators, controlling page sizes, and integrating with Eloquent and the query builder, making reliable pagination easy to add to APIs and vi...
Architecture fit. eonx-com/easy-pagination is a pagination input utility, not a paginator. It parses request-driven page/per_page values and defaults into a transport-agnostic value object, leaving the actual query execution and response shaping to your application. That is a clean architectural seam: it fits hexagonal/DDD-style codebases where pagination parameters are a domain-ish concept, and it slots underneath Eloquent, Doctrine, or raw PDO without competing with Laravel's LengthAwarePaginator. It is a poor fit if controllers already lean on paginate() — you would be introducing a second pagination vocabulary alongside Laravel's native one.
Integration feasibility. Composer-installable, MIT-licensed, EonX easy-* family. The [READ-ONLY] marker signals a subtree split from a vendored monorepo, so the real source of truth is upstream. The package surface is small (likely one or two value objects and a parser), so a time-boxed spike should complete in a day: install, read src/ and tests/, verify behavior against a throwaway endpoint.
Technical risk. The dominant risk is dependency governance, not code quality. With 2 stars, 0 dependents, docs-only maturity, and a single-vendor bus factor, you are effectively adopting an unmaintained-or-soon-to-be-orphaned utility. Runtime risk is negligible (no I/O, no state, small attack surface); lifecycle risk is real and will surface at exactly the wrong moment — a PHP minor bump or Laravel upgrade where no one owns the fix. Secondary risks: silent trust of client input (does it actually clamp per_page?), and transitive easy-* creep if siblings are pulled in.
Key questions.
illuminate/http or illuminate/support, or is it genuinely PSR-7/framework-agnostic? Framework coupling determines whether a Laravel bump breaks it.composer.json? Below PHP 8.1 is a non-starter.Stack fit. Standard Laravel/PHP 8.1+ service on Composer. Insertion point is the HTTP boundary: parse incoming pagination into the package's object, pass it inward to a query/repository layer. This is the seam where you want one canonical representation across endpoints — good conceptual fit. Not a fit for teams already standardized on Laravel's native paginator; the ergonomic benefit over $request->integer('per_page', 15) is thin.
Migration path. Low-friction and reversible. Introduce it behind a small internal interface (e.g., PaginationParamsFactory) rather than importing the vendor class across the codebase. That wrapper is the exit plan: if the package is abandoned, you swap the implementation and call sites stay untouched. Migration itself is mechanical — replace ad-hoc $request->get('page') parsing endpoint-by-endpoint as you touch each one. Do not attempt a big-bang rewrite of existing paginated endpoints; there is no upside.
Compatibility. Verify declared composer.json constraints against your PHP runtime and Laravel minor version before anything else. Because it is a read-only split, tags may lag the parent monorepo. Pin an exact version rather than a caret range and commit the lockfile. Audit composer why eonx-com/easy-pagination after install to catch transitive easy-* siblings that would multiply the vendor risk. Confirm whether a service provider registration is required or whether it is pure PHP.
Sequencing.
Maintenance. Near-zero runtime maintenance: no processes, no state, no config drift, no scheduled jobs. The maintenance burden is entirely upgrade maintenance, and it is binary — the package either keeps pace with PHP/Laravel or it does not, and with 0 dependents there is no community to notice or patch first. Budget an annual review plus a check on every PHP minor and Laravel major upgrade. If the answer is ever "no," you lean on the adapter seam and fork or replace.
Support. The weakest dimension. Vendor support is whatever EonX's internal needs happen to be; community support is nonexistent; there is no fork with momentum. In practice your team becomes maintainer of last resort. For a utility this small and isolated, tolerable. For anything load-bearing across many services, not acceptable.
Scaling. No scale concerns from the package itself. It is constant-cost per-request parsing, independent of result-set size, concurrency, or data volume. Any scaling problems will live in the query layer, not here. The one scaling-adjacent concern is enforcement: if the package does not clamp per_page, a client can request 100,000 rows and your database takes the hit — a per-client DoS vector you must close in your own adapter regardless of what the package does.
Failure modes.
per_page reaching the query layer. Mitigation: enforce caps in your adapter, not just in the package.easy-* creep: one install drags in siblings, expanding the unmaintained surface. Mitigation: composer why audit post-install.Ramp-up. Minimal technically — a mid-level PHP developer should be productive in under an hour: small API, short README, no framework incantations. The real onboarding cost is governance, not learning: socializing the "always go through the adapter" convention and keeping the vendor class contained. That governance cost exceeds the technical learning curve and is the metric a TPM should track during the pilot. If the team cannot sustain the convention, the dependency is not worth the discipline it demands.
How can I help you explore Laravel packages today?