gabrieliuga/laravel-nova-sidebar-links
Add custom links to your Laravel Nova sidebar with minimal setup. Configure internal routes, external URLs, and custom menu entries from a simple config file, keeping your Nova navigation organized and tailored to your workflow.
Architecture fit. The package is a thin decorator over Laravel Nova's sidebar/menu registration surface. It adds no Vue components, publishes no assets, and introduces no runtime services — it exists purely so link definitions live in config rather than in Nova core views. Architecturally that means it fits only if Nova is already the place where operators work, and the value it delivers is discipline (one config file, no core edits) rather than capability. Everything it does is reproducible in roughly 20 lines inside NovaServiceProvider. The honest framing for a roadmap conversation: this is a convenience dependency, not a platform component.
Integration feasibility. Low effort, gated by one unknown. Installation is a composer require plus provider registration; configuration is a published config file; the first link is an afternoon's work. The gating unknown is the Nova major version. The package's last release is 2020-04-06, which predates Nova 4 by roughly two years and Nova 5 by considerably more. Nova's menu and tool registration APIs have moved across those majors. The compatibility matrix in the package's composer.json — not the README — is the single most important fact to establish before any commitment, and the 2020 timestamp is a strong prior that the constraint targets Nova 2/3.
Technical risk.
canSee-style) affect rendering only. Hiding a link is not authorization; the destination route must enforce its own policy. This is the most common real-world failure with link packages and needs to be stated in the integration ticket, not discovered in review.config:cache is rebuilt in environments that cache aggressively.Key questions for the team.
composer.json constraint actually permit it — or would we be installing with --ignore-platform-reqs?Stack fit. Laravel + Nova, and nothing else. There is no meaningful adaptation for Filament, Backpack, or a hand-rolled Blade admin — the package is meaningless outside Nova's sidebar contract. If we are not on Nova, the evaluation ends here.
Migration path. There is no migration to perform: v1.0.5 is a community-patch release with no breaking changes, no deprecations, and no new configuration surface, so it carries zero migration cost and unlocks no new capability. The migration path that matters is the exit path — from package to inline code — because that is the likely end state. Design for it on day one: put all link registration behind our own small registrar class (or a dedicated service provider) called from NovaServiceProvider, so replacing the package with native registration is a one-file change rather than a refactor. If we do this, the package's lifetime becomes a non-issue.
Compatibility. Pin the package and pin Nova; upgrade them together. Validate in a branch against a real Nova instance rather than reasoning from the README. Add two feature tests — permitted user sees the link, denied user does not — because these are the regressions that surface on every Nova upgrade.
Sequencing.
composer.json constraints against our current Nova/Laravel versions. If unsatisfiable, stop and inline.Decision framing for stakeholders. Present this as a build-vs-buy call on a 20-line feature, not a platform decision. The cheapest correct outcome is frequently "inline the equivalent config," and the package is only justified if it demonstrably saves maintenance across Nova majors — which, given the 2020 release date, it currently does not.
Maintenance. The code we own is trivial; the dependency we own is not. The recurring cost is version tracking against Nova's menu internals, plus a periodic judgment call on whether silence from the maintainer means stability or abandonment. Budget a small recurring review at each Nova upgrade rather than a one-time install cost.
Support. Effectively none. MIT, single maintainer, no SLA, no security-response commitment. Escalation path is a fork — which is viable precisely because the surface area is small, and is another argument for centralizing registration so a fork is a drop-in.
Scaling. Negligible performance footprint at any realistic scale; the constraint is conceptual, not technical. It handles a static list of under ten links cleanly. It does not handle nested menus, dynamic badges, per-role matrices, or anything requiring state — and attempting to stretch it there costs more than writing the Nova tool. Expect the sidebar to get noisy as more packages attach to it; always set explicit ordering values rather than relying on registration order.
Failure modes, ranked by expected impact.
Ramp-up. Hours for any Laravel developer who has touched NovaServiceProvider; effectively zero ongoing cognitive load once the registrar pattern is in place. There is no meaningful ramp for non-Laravel engineers because there is nothing to operate — no queue, no service, no data. The only onboarding artifact worth writing is a short note in the admin-panel README stating where links are defined, that visibility is not authorization, and that a Nova upgrade requires re-verifying this dependency or replacing it with the inline equivalent.
How can I help you explore Laravel packages today?