ericlagarda/nova-settings-card
A Laravel Nova card for managing application settings directly from your admin panel. Add a settings card to Nova dashboards to view and edit configurable values without leaving the interface.
Architecture fit
Nova cards are the lowest-coupling extension point in the Nova ecosystem: a Laravel\Nova\Card subclass, a compiled Vue component, and a Nova::cards() / service-provider registration. Adopting this package would not touch the application domain layer, would not require schema changes in and of itself, and is trivially removable. That is the strongest argument in its favor.
The open question is what sits behind the card. A settings card is only useful if it binds to a persistence layer — most likely a config file, a settings table, or a third-party settings package (Spatie's laravel-settings is the current de facto standard; in 2019 the common choices were nova-settings variants or hand-rolled key/value tables). The README-level description gives no indication of the backing store, whether the card is read-only or writable, or how it authorizes writes. That ambiguity is the single largest architectural unknown and must be resolved by source review before any estimate is credible.
Integration feasibility
Feasible but not as a dependency. The package's last release is November 2019, which places its composer.json constraints in the Laravel 6.x / Nova 2.x / PHP 7.2–7.4 era. Any current target stack (Laravel 10–12, PHP 8.2+, Nova 4 or 5) will fail composer require on constraint mismatch at best, and at worst install into a permissive constraint and then fail at runtime. Nova 4 moved to Vue 3 and Inertia with a rebuilt asset pipeline; a Nova 2-era Vue 2 card will not mount in a Nova 4/5 dashboard without a rewrite of the component, the build config, and probably the card's data-fetch contract.
Realistic paths, in order of preference:
Technical risk
| Risk | Severity | Note |
|---|---|---|
| Abandonment | High | Single maintainer, no release in ~6 years, 0 dependents |
| Framework drift | High | Pre-dates Nova 4's front-end rewrite; Vue 2 → Vue 3 |
| Security exposure | High | Settings cards routinely surface API keys, mail credentials, feature flags. Authorization model unverified |
| Supply chain | Medium | Personal vendor namespace (ericlagarda/*), no downstream scrutiny of 8-star package |
| Behavior opacity | Medium | Writable settings imply cache invalidation, config precedence, and multi-tenant scoping concerns not documented |
The 2.33 composite score is directionally correct. The opportunity: 11.92 sub-score is the interesting counter-signal: it suggests the problem space (managing runtime settings from inside the admin panel) is underserved, not that this artifact is the answer. Treat that as a build signal, not a buy signal.
Key questions
config:cache?composer.json?Stack fit
Poor against a current stack, acceptable against a legacy one. If the estate is still on Nova 2 / Laravel 6, the package may install and work, but you would be pinning a piece of admin tooling to an EOL framework generation — a bad trade for a feature this small. On Nova 4/5, assume a rewrite. Confirm the Nova major version and PHP minimum before anything else; that single check decides the path.
Migration path
No data migration is implied — a Nova card carries no schema. The migration is code migration: lift the settings read/write logic into a first-party service class, expose it through a thin card, and keep the settings store as the stable seam so the UI can be swapped independently. If the package ships its own table, migrate to Spatie laravel-settings (or a plain key/value table with typed casts) rather than carrying an orphan schema forward.
Compatibility
Three axes to verify independently: (a) Composer constraints, (b) Nova front-end generation (Vue 2/Mix vs Vue 3/Vite), (c) PHP version and any removed/renamed Laravel helpers. Any one failing forces path 1 or 2 above. Nova's licensing model also matters — cards are only testable against a licensed Nova install, so CI coverage is typically manual and the blast radius of a broken card is your own admin dashboard.
Sequencing
Total: roughly one engineer-week. That is the benchmark against which "just install the package" should be judged — and it is small enough that the dependency is hard to justify.
Maintenance
Zero upstream maintenance is the defining characteristic. There will be no PHP 8.3/8.4 compatibility patch, no Nova 5 support, no security response. Carrying it means you own it regardless — so own it deliberately, in your own repository, rather than through a transitive Composer dependency that silently rots and that a future engineer will assume is supported because it is in composer.json.
Support
No vendor, no SLA, no issue triage. Internal support burden falls on whoever can read Vue and Nova internals. Knowledge concentration risk is real for a component that gates admin-visible settings; document the authorization model and the settings precedence rules explicitly, because they are the two things that will be misremembered.
Scaling
The card itself scales fine — it is a per-request render, not a hot path. The scaling risk is in the settings backend: if every dashboard load hits the settings table uncached, or if writes invalidate a config cache that other requests depend on, you get latency coupling between admin UI usage and application performance. Insist on a read-through cache with explicit invalidation before this ships to more than a handful of operators.
Failure modes
config:cache shadowing the DB value. Highest-severity mode; produces "I changed it and nothing happened" support tickets.Ramp-up
Low for any engineer already fluent in Nova — a card is a well-trodden pattern and the code surface is small. The ramp-up cost is not learning the package; it is reconstructing intent from undocumented 2019 code, which is precisely the cost the in-house build avoids.
Recommendation: do not adopt as a dependency. Use the repository as a reference read, then build a first-party card over a maintained settings backend with an explicit authorization gate and cache-invalidation contract. The opportunity signal is worth acting on; this specific artifact is not the vehicle.
How can I help you explore Laravel packages today?