Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Google Drive Backup Manager Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • Pre-1.0 version. v0.4.x carries no stability guarantee. This release is labeled a patch but changes error semantics (silent 401 later becomes an immediate thrown exception at service construction), which is a behavioral change consumers can observe.
  • Credential lifecycle is the dominant risk surface. The release notes confirm the package mints an access token at disk resolution, caches it per process, and that refresh-token rotation can invalidate it. It is not stated whether the package persists a rotated refresh token back to storage. If it does not, every rotation still requires a manual reconnect — the fix only shortens time-to-diagnosis, not time-to-recovery.
  • OAuth app publishing status. If the Google Cloud OAuth client remains in "Testing" mode, Google expires refresh tokens after ~7 days. That alone reproduces the reported 401 pattern and would make this package operationally unusable in production regardless of version. This must be confirmed before adoption.
  • Unverified: multi-connection and multi-tenancy. Unclear whether multiple Google accounts / per-tenant connections are supported, and whether 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.
  • Unverified: backup integrity. No mention of resumable/chunked upload, at-rest encryption before upload, checksum verification, or a restore path. A backup feature without a tested restore is a liability.
  • Observability gap. Throwing a clear exception improves log signal, but if the Filament UI does not surface it and no one watches failed_jobs, scheduled backups can fail silently for weeks.

Key questions.

  1. Supported matrix: PHP, Laravel, and Filament major versions — and is there a 1.0 roadmap?
  2. Is a rotated refresh token persisted automatically, or is "reconnect" always a manual operator action?
  3. Where is the thrown reconnect error surfaced — Filament notification, log only, or both — and is there a hook for alerting?
  4. Are backups encrypted client-side before upload, and is there a documented restore procedure?
  5. Does the package support multiple Google accounts or per-tenant connections?
  6. Retention/pruning: does it delete remote files, and is deletion scoped safely?
  7. Repo health: maintainer responsiveness, open issues, license, bus factor, CI coverage for the disk-rebuild path.

Integration Approach

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.

  1. Pin the version; add an integration test that simulates a long-lived worker with an expired/rotated token and asserts the job succeeds after applyBackupConfig().
  2. Stand up a dedicated Google Cloud project and OAuth client; resolve the publishing-status question (Testing vs. In production) before further work.
  3. Upgrade in staging against a real Drive folder; run manual backup, scheduled backup on a --max-time=0 worker, forced token revocation, and account reconnect.
  4. Roll to production scoped to a single super-admin connection; monitor for two weeks.
  5. Only then expand scheduling frequency, retention policies, and any multi-tenant use.

Operational Impact

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource