nikaia/nova-rating-field
A Laravel Nova field that adds interactive star ratings to your resources, letting users rate records with a configurable star scale directly in the Nova UI. Supports custom icons, half stars, and read-only display for indexes and detail views.
Number or Select field backed by integer|between:1,5 validation, or spend roughly half a day building an in-house Nova field (~150–200 LOC). The PM decision is narrow — does a clickable-star affordance justify any third-party dependency in the admin surface?update:value model), requiring a component rewrite rather than a patch. That is a maintenance-budget call and belongs in the same review as any other dependency.Field subclass, one Vue component, Nova::script() / Nova::style() registration — which shortens the in-house estimate and de-risks the build.Consider it only when all of the following hold:
Number field with min:1 max:5, or a Select — is judged a meaningful UX regression for operators. In most admin panels it is not.Look elsewhere — or build it in-house — when:
Default recommendation: do not adopt as a dependency. Use it as reference source, replicate the behavior in-house, and own the result. If a fork is ever justified (genuine multi-app reuse), vendor the commit, pin it, register it in a "vendored UI" list with a named owner, and maintain a Nova↔Laravel↔PHP↔Vue compatibility matrix.
For executives (30 seconds): This is a free, MIT-licensed UI widget that adds clickable star ratings to our internal admin panel. It is a convenience for staff data entry — it does not touch anything customers see, and it is not a product feature. The catch is that it was last released in December 2019, has no maintainers, and no other projects depend on it. It almost certainly won't work with our current Nova version without a rewrite. My recommendation is to not take the dependency: the same result is about half a day of our own engineering, after which we own it, we can fix it, and we're not carrying an abandoned vendor into every future framework upgrade.
For engineering: Treat the repo as reference source, not a dependency. The pattern is one Field subclass plus one Vue component registered through Nova::script() / Nova::style() — roughly 150–200 LOC. Vendor it into app/Nova/Fields as StarRating, target the current Nova field API (update:value, Nova.booting((app) => app.component(...)), nova.mix.js), and add what the 2019 original lacks: a clear-to-null affordance, aria-label and keyboard handling, an integer cast on the column, server-side between:1,max validation in the FormRequest (not just field rules), and a plain-text or Number display on index to avoid per-row component blowout on large tables. Pair it with an accessor or cached column for any aggregate ("4.2/5") — never try to make the input widget produce a float.
Framing the decision: the question is not "is this widget good?" — it's "do we want an unowned, unmaintained dependency in our admin surface to save half a day?" The answer is no, but the half-day is still worth spending, because operators get the affordance and we get a component we can maintain in an afternoon rather than a migration project.
How can I help you explore Laravel packages today?