PHPackages                             abinashbhatta/lightweight-queue-inspector - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Debugging &amp; Profiling](/categories/debugging)
4. /
5. abinashbhatta/lightweight-queue-inspector

ActiveLibrary[Debugging &amp; Profiling](/categories/debugging)

abinashbhatta/lightweight-queue-inspector
=========================================

A lightweight debugging dashboard for Laravel applications using the database queue driver

v1.0.1(4mo ago)28MITBladePHP ^8.1

Since Feb 19Pushed 3mo agoCompare

[ Source](https://github.com/abinash889/lightweight-queue-inspector)[ Packagist](https://packagist.org/packages/abinashbhatta/lightweight-queue-inspector)[ RSS](/packages/abinashbhatta-lightweight-queue-inspector/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (6)Versions (3)Used By (0)

⚡ Lightweight Queue Inspector
=============================

[](#-lightweight-queue-inspector)

A lightweight debugging dashboard for Laravel applications using the **database queue driver**. No Redis. No Horizon. Just your existing `jobs` and `failed_jobs` tables.

[![Laravel](https://camo.githubusercontent.com/6426a963e14f43fa5c2f2b7ac5727eca6b7d8295e49430202720e6568c89c78c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d313025323025374325323031312d7265643f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c)](https://camo.githubusercontent.com/6426a963e14f43fa5c2f2b7ac5727eca6b7d8295e49430202720e6568c89c78c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d313025323025374325323031312d7265643f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c)[![PHP](https://camo.githubusercontent.com/9847427b3ad37d5f2f3122f63983977e1b0ab038e06a24272d8c4514725c11a0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d626c75653f7374796c653d666c61742d737175617265266c6f676f3d706870)](https://camo.githubusercontent.com/9847427b3ad37d5f2f3122f63983977e1b0ab038e06a24272d8c4514725c11a0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d626c75653f7374796c653d666c61742d737175617265266c6f676f3d706870)[![License](https://camo.githubusercontent.com/422db9fd40f5831c765cf6530b6750c081b696bd18d904cf89554df98c676277/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/422db9fd40f5831c765cf6530b6750c081b696bd18d904cf89554df98c676277/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265)

---

What It Does
------------

[](#what-it-does)

PageDescription`/queue-inspector`Dashboard with summary stats`/queue-inspector/pending`All pending jobs with collapsible payload viewer`/queue-inspector/success`Successfully completed jobs with execution time + memory`/queue-inspector/failed`Failed jobs with exception messages, stack traces, retry + delete---

Features
--------

[](#features)

- **Pending Jobs** — view all jobs waiting in the queue with ID, class name, queue, attempts, timestamps and raw payload
- **Failed Jobs** — view exception messages, full stack traces, retry or delete individual jobs, bulk retry all, clear all
- **Success Jobs** — track every completed job with execution time (color coded: green/orange/red) and memory usage
- **Execution Tracking** — automatically records job metrics via Laravel queue events. No extra setup needed
- **Dashboard Stats** — pending count, failed count, success count, average execution time, top failing job, active queues
- **Filters** — filter any page by queue name or job class
- **Installation Warnings** — terminal warnings if required tables are missing, wrong queue driver, or auth not configured
- **Security Guard** — friendly browser page if auth middleware is configured but no login route exists yet

---

Screenshots
-----------

[](#screenshots)

### Dashboard

[](#dashboard)

[![Dashboard](/.github/screenshots/dashboard.png)](/.github/screenshots/dashboard.png)

### Successful Jobs — with execution time tracking

[](#successful-jobs--with-execution-time-tracking)

[![Success Jobs](/.github/screenshots/success-jobs.png)](/.github/screenshots/success-jobs.png)

### Failed Jobs — with exception messages and actions

[](#failed-jobs--with-exception-messages-and-actions)

[![Failed Jobs](/.github/screenshots/failed-jobs.png)](/.github/screenshots/failed-jobs.png)

---

Requirements
------------

[](#requirements)

- PHP 8.1 or higher
- Laravel 10 or Laravel 11
- Queue connection set to `database`

---

Installation
------------

[](#installation)

### Step 1 — Install via Composer

[](#step-1--install-via-composer)

```
composer require abinashbhatta/lightweight-queue-inspector
```

### Step 2 — Make sure required tables exist

[](#step-2--make-sure-required-tables-exist)

If you don't have the `jobs` table:

```
php artisan queue:table
php artisan migrate
```

If you don't have the `failed_jobs` table:

```
php artisan queue:failed-table
php artisan migrate
```

### Step 3 — Run the package migration

[](#step-3--run-the-package-migration)

This creates the `queue_job_metrics` table used for execution tracking:

```
php artisan migrate
```

### Step 4 — Set queue driver to database

[](#step-4--set-queue-driver-to-database)

In your `.env` file:

```
QUEUE_CONNECTION=database
```

### Step 5 — Publish the config (optional but recommended)

[](#step-5--publish-the-config-optional-but-recommended)

```
php artisan vendor:publish --tag=queue-inspector-config
```

### Step 6 — Visit the dashboard

[](#step-6--visit-the-dashboard)

```
http://yourapp.com/queue-inspector

```

That's it. The package auto-discovers via Laravel's package discovery — no need to add anything to `config/app.php`.

---

Configuration
-------------

[](#configuration)

After publishing, open `config/queue-inspector.php`:

```
return [

    // The URL prefix for the dashboard
    // Change this to move the dashboard to a different URL
    'path' => env('QUEUE_INSPECTOR_PATH', 'queue-inspector'),

    // Middleware applied to ALL dashboard routes
    // ⚠ Always keep 'auth' here in production!
    'middleware' => ['web', 'auth'],

    // Your jobs table name — only change if you renamed it
    'jobs_table' => env('QUEUE_JOBS_TABLE', 'jobs'),

    // Your failed jobs table name — only change if you renamed it
    'failed_jobs_table' => env('QUEUE_FAILED_JOBS_TABLE', 'failed_jobs'),

    // The metrics table created by this package — do not rename
    'metrics_table' => 'queue_job_metrics',

    // How many jobs to show per page
    'per_page' => 20,

];
```

---

Security
--------

[](#security)

> ⚠ **IMPORTANT**: The dashboard exposes sensitive job data — payloads, exception messages, stack traces, and allows retrying or deleting jobs. **Always protect it with authentication in production.**

### The package will warn you in the terminal if auth is missing

[](#the-package-will-warn-you-in-the-terminal-if-auth-is-missing)

Every time you run any `php artisan` command, you will see:

```
[Queue Inspector] SECURITY WARNING
→ The dashboard is publicly accessible!
→ No 'auth' middleware found in queue-inspector config.
→ Fix: Add 'auth' to config/queue-inspector.php:
  'middleware' => ['web', 'auth'],

```

### The package will warn you if auth is set but no login route exists

[](#the-package-will-warn-you-if-auth-is-set-but-no-login-route-exists)

If you have `'auth'` in the config but your app has no login system installed:

**Terminal warning:**

```
[Queue Inspector] AUTH ROUTE WARNING
→ You have 'auth' middleware in queue-inspector config.
→ BUT your app has no 'login' route!
→ Visiting the dashboard will cause a RouteNotFoundException.

  Option A: Set up Laravel auth in your app:
    composer require laravel/breeze --dev
    php artisan breeze:install
    php artisan migrate

  Option B: Remove auth for now (NOT for production):
    'middleware' => ['web'],  // in config/queue-inspector.php

```

**Browser page:** Instead of a confusing error, the dashboard shows a friendly setup guide page with both options explained clearly.

### Recommended middleware setups

[](#recommended-middleware-setups)

```
// Basic — any logged in user can access
'middleware' => ['web', 'auth'],

// Specific guard
'middleware' => ['web', 'auth:sanctum'],

// Admin only (recommended for production teams)
'middleware' => ['web', 'auth', App\Http\Middleware\EnsureUserIsAdmin::class],
```

---

Execution Tracking
------------------

[](#execution-tracking)

The package automatically listens to Laravel's built-in queue events. No configuration needed.

EventWhat gets recorded`JobProcessing`job class, queue name, started\_at timestamp`JobProcessed`finished\_at, execution\_time\_ms, memory\_usage\_mb, status = success`JobFailed`finished\_at, execution\_time\_ms, status = failed, exception message> **Note:** These events only fire when jobs are processed by `php artisan queue:work`. They do not fire for jobs sitting in the pending queue.

### Execution time color coding on the Success Jobs page

[](#execution-time-color-coding-on-the-success-jobs-page)

ColorTimeMeaning🟢 GreenUnder 500msFast — no action needed🟠 Orange500ms – 2000msAcceptable — keep an eye on it🔴 RedOver 2000msSlow — consider optimising---

Installation Warnings Reference
-------------------------------

[](#installation-warnings-reference)

The package checks your setup on every artisan command and warns you clearly:

WarningCauseFixTable 'jobs' not foundjobs table missing`php artisan queue:table && php artisan migrate`Table 'failed\_jobs' not foundfailed\_jobs table missing`php artisan queue:failed-table && php artisan migrate`Table 'queue\_job\_metrics' not foundpackage migration not run`php artisan migrate`Queue driver is not 'database'wrong driver in .envSet `QUEUE_CONNECTION=database`Dashboard publicly accessibleno auth in middleware configAdd `'auth'` to middlewareAuth set but no login routeauth on but no login systemInstall Breeze or remove auth---

Facade Usage
------------

[](#facade-usage)

Use the `QueueInspector` facade anywhere in your application:

```
use AbinashBhatta\QueueInspector\Facades\QueueInspector;

// Get dashboard stats
$stats = QueueInspector::getStats();
// Returns: total_pending, total_failed, total_success,
//          avg_execution_time, top_failing_job, available_queues

// Get pending jobs (optional filters)
$jobs = QueueInspector::getPendingJobs();
$jobs = QueueInspector::getPendingJobs(queue: 'emails');
$jobs = QueueInspector::getPendingJobs(jobClass: 'SendEmailJob');

// Get failed jobs
$jobs = QueueInspector::getFailedJobs();
$jobs = QueueInspector::getFailedJobs(queue: 'payments');

// Get successful jobs
$jobs = QueueInspector::getSuccessJobs();

// Actions
QueueInspector::retryJob($id);           // Retry one failed job
QueueInspector::deleteFailedJob($id);    // Delete one failed job
$count = QueueInspector::retryAllJobs();        // Retry all failed jobs
$count = QueueInspector::clearAllFailedJobs();  // Delete all failed jobs
```

---

Customising Views
-----------------

[](#customising-views)

Publish the views to customise the dashboard UI:

```
php artisan vendor:publish --tag=queue-inspector-views
```

This copies all Blade files to `resources/views/vendor/queue-inspector/` in your app. Laravel automatically loads your customised versions instead of the package defaults.

---

Changelog
---------

[](#changelog)

### v1.0.1 — Initial Release

[](#v101--initial-release)

- Dashboard with stats summary
- Pending jobs list with payload viewer
- Failed jobs with retry and delete actions
- Success jobs with execution time and memory tracking
- Automatic execution tracking via queue events
- Installation warnings system
- Auth misconfiguration detection
- Facade support
- Laravel 10, 11, 12 compatible

---

Roadmap — Coming Soon
---------------------

[](#roadmap--coming-soon)

These features are planned for upcoming versions. Community contributions are welcome!

FeatureVersionStatusAuto refresh dashboard every X secondsv1.1.0🔜 PlannedJob scheduling — see scheduled jobsv1.1.0🔜 PlannedEmail/Slack notification when job failsv1.1.0🔜 PlannedDark mode supportv1.2.0🔜 PlannedExport failed jobs to CSVv1.2.0🔜 PlannedProcessing jobs page (currently running)v1.2.0🔜 PlannedJob attempt history per job UUIDv1.3.0🔜 PlannedCharts — job trends over timev1.3.0🔜 PlannedMulti-connection supportv2.0.0💭 Considering---

Contributing
------------

[](#contributing)

Contributions are welcome and appreciated!

1. Fork the repository
2. Create a feature branch

```
   git checkout -b feature/your-feature-name
```

3. Make your changes
4. Commit with a clear message

```
   git commit -m "feat: add your feature description"
```

5. Push to your fork

```
   git push origin feature/your-feature-name
```

6. Open a Pull Request on GitHub

Please make sure your code follows the existing style and all existing tests still pass.

---

Bug Reports &amp; Feature Requests
----------------------------------

[](#bug-reports--feature-requests)

Found a bug? Have a feature idea?

👉 **Open an issue on GitHub:**

Please include:

- Laravel version
- PHP version
- Steps to reproduce (for bugs)
- Expected vs actual behaviour

---

License
-------

[](#license)

MIT — free to use in personal and commercial projects.

---

Author
------

[](#author)

**Abinash Bhatta**

Built with ❤️ for the Laravel community.

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance78

Regular maintenance activity

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

134d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/26e16f9697a299a6cf1bea1a33ec6f8854810e64081cf2cb494cefc0478976db?d=identicon)[abinash889](/maintainers/abinash889)

---

Top Contributors

[![abinash889](https://avatars.githubusercontent.com/u/71618944?v=4)](https://github.com/abinash889 "abinash889 (6 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/abinashbhatta-lightweight-queue-inspector/health.svg)

```
[![Health](https://phpackages.com/badges/abinashbhatta-lightweight-queue-inspector/health.svg)](https://phpackages.com/packages/abinashbhatta-lightweight-queue-inspector)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[laravel/scout

Laravel Scout provides a driver based solution to searching your Eloquent models.

1.7k55.0M619](/packages/laravel-scout)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k15.1M132](/packages/laravel-pulse)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M131](/packages/roots-acorn)[mike-bronner/laravel-model-caching

Automatic caching for Eloquent models.

2.4k90.5k1](/packages/mike-bronner-laravel-model-caching)[illuminate/auth

The Illuminate Auth package.

10528.2M1.2k](/packages/illuminate-auth)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
