PHPackages                             webhubworks/laravel-backup-viewer - 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. [Admin Panels](/categories/admin)
4. /
5. webhubworks/laravel-backup-viewer

ActiveLibrary[Admin Panels](/categories/admin)

webhubworks/laravel-backup-viewer
=================================

A read-only admin page for spatie/laravel-backup: per-target file listings, health status, monitor results, scheduled commands, and notification routing.

v1.0.6(2w ago)075↓33.3%MITPHPPHP ^8.3

Since May 20Pushed 2w ago1 watchersCompare

[ Source](https://github.com/webhubworks/laravel-backup-viewer)[ Packagist](https://packagist.org/packages/webhubworks/laravel-backup-viewer)[ Docs](https://github.com/webhubworks/laravel-backup-viewer)[ RSS](/packages/webhubworks-laravel-backup-viewer/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (8)Versions (8)Used By (0)

Laravel Backup Viewer
=====================

[](#laravel-backup-viewer)

> A read-only admin page for [`spatie/laravel-backup`](https://github.com/spatie/laravel-backup). No interactive scheduling, no setting changes — just a clean view of the state your backup config produces.

Features
--------

[](#features)

- **Backup health** — last run, last successful run, last monitor run, scheduled commands (with humanized cron timings)
- **Per-target checks** — one section per disk × backup-name; reachability, configured spatie checks, plus a synthetic free-disk-space check on local disks
- **Backups by target** — file table per disk, with size / created / download for local-disk backups, encryption-state badges, and a disk-usage bar
- **Notifications** — event → channel → recipient routing for every entry in `backup.notifications.notifications`

Event-driven: the page reads from a small JSON state file populated by listeners that subscribe to spatie's `BackupHasFailed`, `BackupWasSuccessful`, `HealthyBackupWasFound`, `UnhealthyBackupWasFound`. No work runs on page load except free-disk-space probing.

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

[](#installation)

```
composer require webhubworks/laravel-backup-viewer
```

Optionally publish the config (see [Configuration](#configuration) for what's in it):

```
php artisan vendor:publish --tag=backup-viewer-config
```

The package depends on `spatie/laravel-backup` to actually do anything useful — install it too if you haven't:

```
composer require spatie/laravel-backup
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider" --tag=backup-config
```

Authorization
-------------

[](#authorization)

The route is **only accessible in the `local` environment by default**. Open it up elsewhere with the gate-style API (same pattern as `Horizon::auth`):

```
// app/Providers/AppServiceProvider.php
use Webhub\BackupViewer\BackupViewer;

public function boot(): void
{
    BackupViewer::auth(function ($request) {
        return $request->user()?->is_admin === true;
    });
}
```

The callback receives the incoming `Illuminate\Http\Request` and must return `true` to allow access.

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

[](#configuration)

Default settings work for most apps. To override (route path, middleware, download size cap, favicon, low-disk threshold), publish the config:

```
php artisan vendor:publish --tag=backup-viewer-config
```

That writes `config/backup-viewer.php`:

```
return [
    'enabled' => true,
    'route' => [
        'path' => 'backups',
        'name' => 'backup-viewer.index',
        'domain' => null,
    ],
    'middleware' => ['web'],
    'download' => [
        'max_bytes' => 500 * 1024 * 1024, // 500 MB cap; null to disable
    ],
    'low_disk_space_threshold' => 0.15, // warn when < 15% free
    'monitor_stale_after_minutes' => 1440, // 24h
    'favicon' => [
        'html' => null, // raw  block pasted from your main layout
        'path' => null, // OR a single href like '/favicon.svg'
    ],
];
```

### Multi-icon favicon setups

[](#multi-icon-favicon-setups)

For apps that use [realfavicongenerator](https://realfavicongenerator.net)-style multi-icon setups, paste the entire `` block into the `favicon.html` key:

```
'favicon' => [
    'html' =>  null,
],
```

Where state is stored
---------------------

[](#where-state-is-stored)

Listeners write event activity to `//laravel-backup-viewer-state.json` so the file lives next to the backups it describes. Apps with only remote disks fall back to `storage/app/backup-viewer/state.json`. The file is written atomically (tmp + rename).

Scheduling
----------

[](#scheduling)

Stick the spatie commands in Laravel's scheduler:

```
// routes/console.php
use Illuminate\Support\Facades\Schedule;

Schedule::command('backup:clean')->daily()->at('01:00')->onOneServer();
Schedule::command('backup:run --only-db')->daily()->at('02:00')->onOneServer();
Schedule::command('backup:run --only-files')->daily()->at('03:00')->onOneServer();
Schedule::command('backup:monitor')->daily()->at('04:00')->onOneServer();
```

The Backup health card surfaces those entries and humanizes the cron expression ("Daily at 02:00").

Commands you'll actually run
----------------------------

[](#commands-youll-actually-run)

This package adds no Artisan commands of its own. The relevant ones come from `spatie/laravel-backup`:

CommandPurpose`php artisan backup:run`Create a new backup`php artisan backup:run --only-db`Database-only backup`php artisan backup:list`List backups across all configured disks`php artisan backup:clean`Apply retention rules`php artisan backup:monitor`Re-run health checks; populates this page's monitor cardFrontend
--------

[](#frontend)

Pre-compiled Tailwind v4 + Alpine.js are committed inside the package and inlined into the response via `BackupViewer::css()` / `BackupViewer::js()` (same pattern as Laravel Horizon). The host app needs no Vite config, no `vendor:publish` step for assets.

Compatibility
-------------

[](#compatibility)

- PHP 8.3+
- Laravel 11, 12, 13
- spatie/laravel-backup 9.x

License
-------

[](#license)

MIT. See [LICENSE.md](LICENSE.md).

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance96

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity53

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

7

Last Release

18d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/53560154?v=4)[webhub](/maintainers/webhubworks)[@webhubworks](https://github.com/webhubworks)

![](https://www.gravatar.com/avatar/2c4c102b81ef27c8c29f2a30fff2a9c86619d4c05f9128c5aa97bb94c991709a?d=identicon)[marventhieme](/maintainers/marventhieme)

---

Top Contributors

[![marventhieme](https://avatars.githubusercontent.com/u/53627227?v=4)](https://github.com/marventhieme "marventhieme (11 commits)")

---

Tags

spatielaravelbackupdashboardadminWebhub

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/webhubworks-laravel-backup-viewer/health.svg)

```
[![Health](https://phpackages.com/badges/webhubworks-laravel-backup-viewer/health.svg)](https://phpackages.com/packages/webhubworks-laravel-backup-viewer)
```

###  Alternatives

[spatie/laravel-permission

Permission handling for Laravel 12 and up

12.9k98.0M1.3k](/packages/spatie-laravel-permission)[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.3M41](/packages/spatie-laravel-pdf)[spatie/laravel-health

Monitor the health of a Laravel application

88011.3M149](/packages/spatie-laravel-health)[spatie/laravel-passkeys

Use passkeys in your Laravel app

463755.5k32](/packages/spatie-laravel-passkeys)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3913.7k](/packages/rawilk-profile-filament-plugin)[guava/filament-knowledge-base

A filament plugin that adds a knowledge base and help to your filament panel(s).

207140.2k1](/packages/guava-filament-knowledge-base)

PHPackages © 2026

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