llaski/nova-scheduled-jobs
A Laravel Nova package that brings your scheduled tasks into the Nova dashboard. View every scheduled job, inspect cron expressions and next run times, run jobs manually, and toggle them on or off without leaving your admin panel.
crontab -l — even though nightly invoices, exports, syncs, and cleanups run through it. This closes a known gap in the admin surface for roughly a day of effort, before we commit budget to paid APM or uptime tooling.Kernel.php, a service provider, and routes/console.php, or whose cron expression drifted — a class of incident that is otherwise found by a customer.Consider it when:
composer.json at the tag for the laravel/nova and illuminate/* constraints, test in staging on every Nova/Laravel upgrade, and keep a fork as the fallback. The underlying data is just the scheduler's event collection, so the fork is small and contained.NovaServiceProvider::tools(). No schema, no listeners, no persistence — backing it out is trivial.Look elsewhere — or build — when:
Schedule::events() we can write ourselves.canSee() or a Nova policy before it ships.routes/console.php / bootstrap/app.php, and the page can render empty if the schedule isn't loaded on web requests. Compatibility is unverified — treat it as a spike with an explicit pass/fail, not an assumption.For executives (one paragraph): We have a visibility gap in the scheduled work the product depends on — nightly jobs, syncs, and cleanups that nobody can see without an engineer logging into a server. This is a small, free, MIT-licensed add-on to an admin panel we already pay for, and it closes that gap for roughly a day of engineering effort instead of a sprint of custom build. The risk is low but real: it is a single-maintainer project with light adoption and no release since August 2023, so we would treat it as internal convenience tooling, pin the version, verify compatibility with our Nova and Laravel versions before committing, and never depend on it for anything customer-critical. Recommended decision: approve a short spike with an explicit pass/fail, ship it as an internal ops aid, and keep real failure alerting on the roadmap as a separate, funded item.
For engineering: This is a Nova tool that surfaces the Laravel scheduler inside the admin panel — registered jobs, cron expressions, descriptions, and next run times — so nobody has to SSH to answer "is the nightly job still scheduled?" It is strictly read-only: no schema, no write path, no background work, and it does not replace Horizon or alert on failure. Registration is one line in NovaServiceProvider::tools(); gate visibility with canSee() because it is exposed to all Nova users by default. Before we rely on it, prove it on our actual stack: check composer.json at the tag for Nova and illuminate/* constraints, and on Laravel 11+ confirm the schedule is loaded during web requests by comparing the page against php artisan schedule:list. Two things make the page useful rather than confusing: name every closure with ->name()/->description() (unnamed closures render opaque), and annotate operational behavior in the description, since withoutOverlapping(), onOneServer(), and runInBackground() are not surfaced. Treat it as a pinned dependency with a known exit path — if it goes stale or breaks on upgrade, forking is small and contained. Do not let it become load-bearing for anything with an SLA.
How can I help you explore Laravel packages today?