shuvroroy/filament-spatie-laravel-backup
composer require shuvroroy/filament-spatie-laravel-backup
php artisan filament:assets
php artisan vendor:publish --tag="filament-spatie-backup-translations"
app/Providers/Filament/AdminPanelProvider.php:
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
\ShuvroRoy\FilamentSpatieBackup\Plugin::make(),
]);
}
config/backup.php).Integrating with Existing Backups
BackupService to extend functionality. Example:
use Spatie\Backup\Tasks\Backup\BackupTask;
use Spatie\Backup\Tasks\Backup\DatabaseTask;
$backupTask = new BackupTask(
'custom-backup-name',
[
new DatabaseTask(),
// Add custom tasks (e.g., custom files, queues)
]
);
config/backup.php under tasks.Automated Backups via Filament
Plugin::make()
->schedule(Carbon::now()->addDay()) // Set cron-like schedule
->notifyVia('slack') // Optional: Add notifications
Customizing the UI
php artisan vendor:publish --tag="filament-spatie-backup-views"
resources/views/vendor/filament-spatie-backup/... to add fields (e.g., custom backup paths).Storage Integration
config/backup.php:
'disks' => [
's3' => [
'driver' => 's3',
'bucket' => env('AWS_BUCKET'),
'key' => env('AWS_KEY'),
// ...
],
],
Notifications & Alerts
BackupWasSuccessful/BackupFailed events to trigger Filament notifications:
event(new \Spatie\Backup\Events\BackupWasSuccessful($backup));
// In Filament, use `Notification::make()->title('Backup Success')`
Permission Issues
storage/backups) is writable:
chmod -R 755 storage/backups
Large Database Backups
max-backup-size in config/backup.php to split backups:
'max-backup-size' => '500M', // Split into chunks
pcntl_signal for long-running backups.Filament Plugin Registration
AdminPanelProvider is updated.storage/logs/laravel.log (common: missing filament:assets).Translation Conflicts
php artisan vendor:publish --tag="filament-spatie-backup-translations" --force
config/backup.php:
'debug' => env('BACKUP_DEBUG', false),
BackupTask::createTestTask() to simulate backups without storage:
$task = BackupTask::createTestTask('test-backup');
$task->run();
BackupStarting, BackupFinished events for debugging:
BackupWasSuccessful::dispatch($backup);
Custom Backup Types
Spatie\Backup\Tasks\Backup\BackupTask to add custom logic (e.g., API exports):
class CustomBackupTask extends BackupTask
{
public function __construct()
{
parent::__construct('custom-backup', [
new DatabaseTask(),
new \App\Tasks\ExportApiDataTask(),
]);
}
}
Filament Policy Integration
public static function getPages(): array
{
return [
\ShuvroRoy\FilamentSpatieBackup\Pages\BackupPage::class,
];
}
// app/Policies/BackupPolicy.php
public function viewAny(User $user): bool
{
return $user->isAdmin();
}
Webhook Notifications
BackupWasSuccessful event to send webhooks:
BackupWasSuccessful::dispatch($backup)
->then(function () {
Http::post('https://your-webhook-url', ['backup' => $backup->name]);
});
Backup Retention
config/backup.php:
'retention_days' => 7, // Keep backups for 7 days
$task->retentionDays(30);
How can I help you explore Laravel packages today?