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

Nova Sortable Laravel Package

optimistdigital/nova-sortable

A Laravel Nova package for drag-and-drop sorting of resource records in index tables. Add a sortable trait and field, then reorder rows directly in Nova with minimal setup. Ideal for models using an order or sort_order column.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for admin-side ordering. The core question — "do we spend 2–5 engineer-days building drag-and-drop reordering into our Nova admin, or adopt a package?" — this package answers decisively toward buy for the common case. It is a thin, MIT-licensed wrapper over spatie/eloquent-sortable, so the "buy" cost is roughly a Composer require plus a trait and a ->sortable() field call, not a bespoke frontend build.
  • Prioritizing "content ordering" as a shippable feature. A large share of internal admin work is CMS-shaped: banners, FAQ entries, nav links, categories, testimonials, media galleries, onboarding steps. In every one of those, the business ask is "let marketing put this in the right order without filing a ticket." This package turns a recurring, low-glamour roadmap item into a same-sprint deliverable, which makes it easy to bundle into an existing epic rather than justify standalone.
  • Reducing operational/support load. Every reorder request handled by an engineer is a small tax on the team and a delay for the stakeholder. Shipping self-serve drag-and-drop converts a stream of ad-hoc tickets into a one-time build cost — a measurable input to support-load and internal-SLA discussions.
  • Scope calibration on ordering complexity. The package forces an explicit product decision about how sophisticated ordering needs to be: flat or grouped-by-parent ordering (supported, cheap) versus nested trees, workflow-gated ordering, or per-tenant ordering (not supported, needs custom work). Surfacing that fork early prevents over-scoping a "just let them reorder the list" request.
  • Roadmap sequencing for Nova-based products. Because it depends on Laravel Nova (a paid, version-locked dependency), adopting it is implicitly a statement that the admin surface stays on Nova. That is a platform-strategy decision worth recording alongside the feature decision.
  • Vendor/risk posture for internal tooling. With ~285 stars, zero recorded dependents, and a small-agency maintainer (Outl1ne / Optimist Digital), the dependency is low-blast-radius but also low-community-support. That supports a "pin the version, isolate behind one trait, keep an exit ramp" posture rather than treating it as foundational infrastructure.

When to Consider This Package

Adopt when:

  • Laravel Nova is already the admin surface. This is a hard prerequisite — the package has no value outside Nova, and Nova's per-project licensing plus major-version upgrade cadence become part of your cost of ownership.
  • The models can carry a single integer/sort_order column, and ordering is flat or grouped by a single parent/foreign key (e.g., "items within a category").
  • The ordering requirement is genuinely just "humans reorder this list in the admin," with no business rules attached — no approvals, no scheduled ordering, no A/B or personalized ordering.
  • You want the smallest possible surface area: one field method on the Nova resource, one trait on the model, minimal code to later rip out.
  • Speed matters. If the feature needs to land this sprint and the alternative is a custom Vue/Nova component, the package is a clear win.

Look elsewhere or build custom when:

  • You are not on Nova. Filament ships reordering natively; a custom or Inertia/React admin needs a custom implementation; plain Blade admin needs its own JS. Using this package as a reason to adopt Nova is backwards.
  • You need tree/nested-set ordering (multi-level categories, menus, page hierarchies). Reach for a nested-set package or a dedicated sortable-tree solution instead — forcing hierarchy onto a flat sort column produces fragile parent/child schemes.
  • You need audited or approval-gated ordering — e.g., regulated content, merchandising changes that require review, or ordering that must be reversible with attribution.
  • You need per-tenant or per-user ordering at scale. A single sort_order column with drag-and-drop writes is a coarse instrument; concurrent reorders by multiple admins will interleave, and if every tenant needs its own sequence, you are storing a matrix, not a column.
  • Maintenance risk is unacceptable. Nova major-version upgrades periodically break field packages. If admin tooling is business-critical and you cannot tolerate a lag between a Nova release and a compatible package release, vendor the relevant code in-house — it is small enough to fork.
  • Ordering has business semantics — e.g., it drives pricing tiers, ranking, or revenue-weighted placement — in which case you want explicit, tested, owned logic rather than a drag-and-drop field.

Adoption guardrails: verify compatibility with your pinned Nova major version before committing, prototype on one low-stakes resource first, and confirm the migration/column convention matches your existing schema so you are not introducing a second ordering pattern alongside an in-house one.

How to Pitch It (Stakeholders)

For executives (one paragraph): Content ordering in the admin — "put this banner third, move this FAQ to the top" — is a recurring request across nearly every Nova-backed product we run, and today each instance either costs engineering time or gets deferred. This package solves it in a fraction of a day: it is MIT-licensed (no procurement, no per-seat cost), it is a small add-on to the Nova admin we already pay for, and it converts a steady trickle of internal support tickets into self-service for marketing and ops. The risk profile is deliberately modest — it is a thin layer over a widely used ordering library, it touches only the admin surface and never the customer-facing app, and it is removable in an afternoon if we change course. The trade-off is that it is a small, single-maintainer open-source project, so we would pin the version and treat it as convenience infrastructure rather than a foundation. Recommendation: adopt behind a one-resource pilot, and only for resources with straightforward list ordering.

For engineering (the short version): It is a Nova field plus a model trait over spatie/eloquent-sortable. Integration is a sort_order column, a trait on the model, and ->sortable() on the Nova field. No frontend code to maintain, no new build step, no changes to domain logic or API contracts — it is confined to the Nova resource layer. Known limits: flat or single-group ordering only (not nested trees), no audit trail, and coarse concurrency if multiple admins reorder simultaneously. Watch the Nova major-version compatibility matrix before upgrading Nova, pin the package version, and keep the integration isolated to one trait so a fork or removal stays cheap. Please do a 1-resource spike and confirm the column convention before we standardize on it.

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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels