romanzipp/laravel-queue-monitor-nova
A Laravel Nova companion for romanzipp/Laravel-Queue-Monitor. It adds dashboard cards showing queue activity, job status, and failure metrics, letting teams monitor background jobs and spot problems directly from the Nova admin panel.
Architecture fit. The package is a thin presentation layer: it registers a Laravel Nova tool that surfaces records written by romanzipp/Laravel-Queue-Monitor (a table-per-job-event monitor with queued/started/finished/failed state and a separate failed-jobs table). It adds no queue infrastructure of its own — no listeners, no workers, no schema beyond what the base package migrates. Architecturally that is the right shape for this capability: observability UI should not sit in the job execution path. The catch is that it inherits a hard, two-level dependency chain — Nova (commercial, licensed per site) and queue-monitor (single-maintainer, low activity) — for what is ultimately a read-only admin screen.
Integration feasibility. Mechanically trivial: composer require, register the tool in NovaServiceProvider::tools(), ensure queue-monitor's migrations have run, and confirm jobs are being recorded. No service provider overrides, no middleware, no event wiring in application code. Effort is measured in hours, not days. The friction is entirely in version compatibility, not in the code.
Technical risk. This is where the evaluation turns negative, and the 3-star / 0-dependent / 0.175-score signals should be read as a genuine warning rather than noise:
nova composer constraints and a ToolServiceProvider contract that has changed across 4→5. A Nova upgrade is a forced re-validation of this package, not an independent decision.Key questions.
--with-dependencies leniency?Stack fit. Clean, conditional on Nova already being present. The tool targets the standard Laravel queue path — database/Redis/SQS drivers are irrelevant to it, since it reads monitor rows, not the queue itself. If the org runs Nova for other admin surfaces, this slots in with no architectural argument. If Nova is not present, this package must not be the reason to adopt Nova; that is a platform decision that dwarfs the package.
Migration path. Sequencing matters more than the install:
laravel-queue-monitor first, in staging. Verify job lifecycle rows are actually being written for our real queue drivers and job classes — some drivers and some dispatch paths behave differently, and a monitor that silently records nothing yields a Nova screen that silently shows nothing.Compatibility. Treat this as a matrix, not a checkbox: Nova major × queue-monitor major × Laravel major × PHP version. The package's own composer constraints are the first gate; the second is whether Nova's tool registration API still matches. Pin exact versions in composer.json and add this package to the upgrade-runbook checklist for any Nova bump.
Build-vs-buy recommendation. Run a two-day spike: register two Nova Resources against the queue-monitor tables with filters and one failed-jobs metric. If that spike lands cleanly — which the scope suggests it will — the in-house version removes the third-party dependency entirely while keeping the (still third-party, but far more load-bearing and better maintained) queue-monitor. Given 0 dependents and a single maintainer, I would default to this path and treat the package as reference implementation rather than a dependency.
Maintenance. Low ongoing effort if versions are frozen; high episodic effort at every Nova or Laravel major. Single-maintainer upstream means we should assume we are the maintainers of last resort. Budget a fork-ready posture: vendor the package into the repo or mirror it, so a Nova upgrade is a local patch rather than a wait on upstream.
Support. Community-only, no SLA, no security disclosure process to speak of. Acceptable for an internal read-only admin screen; not acceptable if the tool were ever exposed to customers. The blast radius is genuinely small — it is a viewer, and removing it degrades visibility, not correctness.
Scaling. The bottleneck is queue-monitor's write path, not the Nova tool. One row per job event means a high-throughput queue (thousands of jobs/minute) generates serious write volume and table growth. Two mitigations to decide up front: route monitor writes to a separate DB connection to avoid contending with application writes, and enforce a short retention window (days, not weeks) with scheduled pruning. The Nova UI itself paginates fine; large tables with missing indexes on created_at/status will produce slow admin pages long before they produce an outage.
Failure modes.
Ramp-up. Near zero for engineers already fluent in Nova Resources; half a day for a Laravel developer new to Nova's tool registration. The real onboarding cost is institutional knowledge about retention policy, what payloads are safe to display, and who is expected to patch the fork when Nova moves — all of which should be written down at adoption time, because upstream will not be the one documenting it.
How can I help you explore Laravel packages today?