alexbowers/nova-multiple-dashboard
Laravel Nova package that lets you create multiple dashboards in a single Nova installation, each with its own cards and configuration. Assign dashboards to users or roles so different teams see the metrics relevant to them, and register new dashboards with minimal setup.
Architecture fit
alexbowers/nova-multiple-dashboard is a Laravel Nova tool — a package that registers a service provider, extends Nova's dashboard controller/route/menu wiring, and lets you register more than one Dashboard class against Nova's single-dashboard UI. Architecturally it is a thin override layer sitting on top of Nova's internals rather than an independent subsystem, which means it inherits the coupling profile of Nova itself: any change to Nova's route names, menu registration, or Dashboard base class is a breaking change for this package.
For our stack this is a narrow but deep fit. It only makes sense if we are on Laravel Nova and specifically on a Nova major version that lacks native multi-dashboard support. Nova 4 introduced first-class, artisan-generated custom dashboards (php artisan nova:dashboard), which is the same capability delivered by the vendor. That materially changes the evaluation: the package's core value proposition has been absorbed upstream.
Integration feasibility
Low-to-moderate effort, conditional on our Nova version:
| Our Nova version | Feasibility | Notes |
|---|---|---|
| Nova 1.x / 2.x | Feasible with caveats | Package targets this era; expect PHP 7.x and Laravel 5.7/5.8 assumptions. Must vendor/fork. |
| Nova 3.x | Uncertain | Untested combination; Nova 3 changed enough internals that overrides may silently misbehave. |
| Nova 4.x / 5.x | Not justified | Native dashboards exist; installing this adds risk and zero capability. |
The hard blockers are not line-of-code volume (the package is small) but the dependency floor: an archived 2019 package pins an old Laravel/Nova/PHP triangle. Adopting it means either freezing part of our platform on end-of-life versions, or forking and forward-porting the override logic ourselves.
Technical risk
Key questions
canSee / authorization may solve it without any package.TPM read: the "opportunity" signal (0.8) reflects genuine demand for multi-dashboard capability — but that demand is now served by the platform. The correct product move is to not adopt, and to treat this package as migration debt if it is already present.
Stack fit
Assumes Laravel + a licensed Nova install. The package is not usable outside Nova. It brings no database migrations of consequence, no queue workers, no external services — it is request-path glue. That makes it cheap to install and cheap to remove, which is the one genuinely favorable integration property.
Migration path
Two paths, and the decision gate is our Nova version.
Path A — we are on Nova 4 or can upgrade: do not install. Use native dashboards:
php artisan nova:dashboard {Name} to generate first-class dashboard classes.Dashboard subclass with its own cards() method.canSee and Nova policies rather than a bespoke menu override.Nova::mainMenu() / custom menu entries if role-based menu differentiation is required.Path B — we are pinned to Nova 1.x/2.x and cannot move: fork, don't depend.
packages/ or a private VCS repo; remove the upstream constraint.composer.json and lock the Nova/PHP/Laravel triangle.Compatibility
Treat Nova's own versioning as the real compatibility contract, not the package's. Before any Nova or Laravel minor bump, run the canary test in staging; the failure mode is usually route/menu registration, which surfaces as a 404 or a missing dashboard rather than an exception.
Sequencing
If we have no current usage, steps 1 and 3 collapse to a short spike and the answer is "no."
Maintenance
Ownership transfers entirely to us. There is no upstream to patch, so the maintenance model is "we own this code the day it ships." For a fork, budget a recurring, low-but-nonzero cost: a review at every Nova/Laravel upgrade plus a canary test. For an unmodified dependency, the cost is unbounded — we cannot fix breakage without forking anyway, so the unmodified-dependency option is strictly worse than forking.
Support
Community-only and effectively nonexistent: 33 stars, archived, single author, no issue triage. Internal escalation path must be a named engineer who understands Nova's dashboard internals. Set expectations accordingly — this is not a "raise a ticket" component; it is a "read the source" component. The source is small enough that this is survivable, which is the main argument in its favor if we are truly stuck.
Scaling
Negligible runtime footprint — the package participates in request routing and menu construction, not in data loading. Card query cost, not the package, dominates dashboard latency; that is a pre-existing Nova concern and should be managed with caching, eager loading, and card-level pagination. Horizontal scaling is unaffected because there is no state.
The real scaling concern is organizational: every new dashboard request becomes a code change owned by us, with no vendor documentation or community patterns to lean on.
Failure modes
Ramp-up
Low for anyone already fluent in Laravel Nova (days), moderate for a general Laravel engineer unfamiliar with Nova internals (1–2 weeks of reading Nova's dashboard controller and menu registration). The mitigant is documentation: write a short ADR recording why the fork exists, what it overrides, and what the removal condition is. Without that, this component will quietly outlive its usefulness and its owner.
How can I help you explore Laravel packages today?