webteractive/filament-google-drive-backup-manager
A Filament plugin for managing Google Drive backups from your admin panel. Configure OAuth credentials, browse and create backups, monitor storage usage, and restore files without leaving Filament. Simple setup and a clean UI for effortless backup management.
Architecture fit. webteractive/filament-google-drive-backup-manager is a Filament panel plugin that wires Laravel's filesystem abstraction to Google Drive via a custom disk driver (gdbm), handling OAuth2 authorization, token refresh, and backup scheduling from within the admin UI. It fits only if we are already committed to Filament as our admin surface and to Google Drive as a backup target. The design leans on Laravel-native primitives (filesystem disks, queue jobs, scheduler), which is the right shape — but it also means it inherits Laravel's process-level disk caching semantics, which is precisely what v0.4.3 had to work around. That coupling is the package's core architectural risk: correctness depends on assumptions about process lifetime that are invisible to the caller.
Integration feasibility. Mechanically simple: Composer install, publish config, register the plugin on a panel, supply a Google Cloud OAuth client (ID/secret/redirect URI), connect an account through the UI, configure a schedule. The real effort is not code — it is Google Cloud project setup, OAuth consent-screen configuration, scope selection, and secret custody. Outbound HTTPS to oauth2.googleapis.com and www.googleapis.com is required from both web and worker nodes. A queue worker is mandatory; a scheduler is strongly implied.
Technical risk.
401 later becomes an immediate thrown exception at service construction), which is a behavioral change consumers can observe.401 pattern and would make this package operationally unusable in production regardless of version. This must be confirmed before adoption.forgetDisk() on a shared worker could evict configuration another job depends on. Sequentially executed jobs should be safe (each rebuilds), but concurrent backups in one process are worth testing.failed_jobs, scheduled backups can fail silently for weeks.Key questions.
Stack fit. Laravel + Filament, queue-backed, with Horizon for worker supervision. Requires google/apiclient (transitively) and a writable local staging path for uploads. No database migrations beyond the package's own connection/config tables.
Migration path. From v0.4.2 this is a patch bump (composer update) with minimal code churn, but three things must be checked rather than assumed: (a) any application code that resolves the gdbm disk directly and caches the instance, (b) custom disk configuration overrides that applyBackupConfig() may now re-apply on every run, and (c) try/catch blocks around backup jobs — previously a dead connection failed later with a 401, now it throws at service creation, so catch sites and retry classifications may need updating.
Compatibility. Confirm the plugin registers cleanly on our Filament major version and that the forget-disk behavior does not conflict with any custom filesystem driver wrappers. Note the new per-run cost: every backup job now mints a fresh access token instead of reusing a cached one — negligible individually, but it does mean one extra OAuth round-trip per job, which matters only at high schedule frequency or under Google quota pressure.
Sequencing.
applyBackupConfig().--max-time=0 worker, forced token revocation, and account reconnect.Maintenance. Third-party, pre-1.0, single-maintainer-looking project. Treat every bump as a review event, not a routine update. The nature of these two fixes — both production-correctness issues found by someone running it at scale — is a mildly positive signal about real-world use, but also evidence the package is still maturing in ways that will affect us.
Support. No vendor SLA; support burden sits with the platform team. Permanent overhead includes ownership of the Google Cloud project, OAuth consent-screen compliance, scope justification, and — if scopes are classified sensitive — Google verification. This is administrative work that recurs, not a one-time setup.
Scaling. Backups are I/O- and quota-bound, not CPU-bound; worker concurrency and Google Drive per-user/per-project rate limits are the levers. Adding tenants multiplies OAuth connections and refresh flows linearly. Large backup sizes will expose whether uploads are resumable — verify before committing to any dataset above a few hundred MB.
Failure modes. (1) Refresh token expired or revoked → now a clear, actionable exception (improved). (2) Refresh token rotated but not persisted → recurring manual reconnects. (3) OAuth app left in Testing mode → rolling 7-day expiry, the most likely root cause of the original symptom. (4) Stale cached disk on long-lived workers → fixed here, but this failure class will recur wherever per-process caching meets rotating credentials. (5) Google outage or quota exhaustion → job retries; needs backoff and alerting to avoid retry storms. (6) Silent job failure with no operator-visible signal. (7) Unverified restore path — the worst failure mode, because it is only discovered when needed.
Ramp-up. Low for an experienced Laravel/Filament engineer: roughly 1 day for OAuth and panel setup, 2–3 days for observability, alerting, and failure-path testing. The higher cost is organizational: a written runbook for "Google account must be reconnected," a named owner for the Google Cloud project, and a routine restore drill. Without those, the clear error message this release adds will be seen by nobody.
How can I help you explore Laravel packages today?