webographen/statamic-widget-cache-controller
A Statamic addon that adds a cache controller widget to the control panel, letting editors clear and manage application caches directly from the dashboard without touching the command line.
Architecture fit. This is a Statamic addon, not a general-purpose Laravel package, and it sits at the shallowest possible layer of the stack: a service provider that registers one Control Panel dashboard widget, plus a view and a handful of cache-clear calls. It does not touch the content repository, the Stache indexing pipeline, routing, or the Eloquent layer. Functionally it is a thin UI wrapper over commands the operator would otherwise run in a terminal (cache:clear, statamic:stache:clear, glide:clear, and possibly view:clear/config:clear). That means the architectural footprint is negligible by design — it neither constrains nor improves the surrounding application. The value proposition is operator convenience for users who lack SSH access, not capability.
Integration feasibility. Installation is a standard composer require plus a widget entry in config/statamic/cp.php, which is a well-trodden and reversible path. Two concerns temper the "trivial to adopt" read:
webographen/* while the repository URL resolves to stoffelio/*. This may be a legitimate fork or transfer, or it may be an unattributed republish. Either way it must be resolved before the package enters a dependency graph — provenance ambiguity in a component with CP-level privileges is a supply-chain question, not a cosmetic one.Technical risk. Moderate relative to the code's size, because the risk is concentrated in what the widget is allowed to do, not in how much code it adds. Cache-clearing is a privileged, potentially disruptive operation: a Stache rebuild on a large site is I/O- and CPU-intensive and can take tens of seconds, and a full application-cache flush under load invites a stampede against the origin datastore. Granting that capability to any CP user who can see a dashboard widget is a meaningful authorization decision that must be audited rather than assumed. Secondary risks are an unmaintained dependency (bus factor of one) and the absence of a visible test suite, version matrix, or CI signal.
Key questions.
composer.json, and is there a compatibility matrix?Stack fit. The package presumes a Laravel + Statamic application on a supported PHP 8.x runtime. Because the widget renders inside the CP, it inherits Statamic's front-end stack (Vue components in v3/v4-era CP, Blade-rendered widget views), so there is no separate asset pipeline to reconcile — but that also means the widget must track Statamic's CP API across majors, which is precisely where single-maintainer addons decay.
Migration path. There is nothing to migrate. This is a purely additive, easily removed dependency: uninstalling is a composer remove plus deleting one config array entry. The realistic decision is therefore build vs. adopt, not migrate vs. stay. Given the narrow surface, an internal equivalent — a small custom widget class invoking the same artisan commands behind an explicit Gate::define('clear-caches') check — is on the order of a day's work and eliminates the third-party and provenance risk entirely. I would default to that unless the addon is confirmed to be first-party, maintained, and version-pinned.
Compatibility. Verify against Packagist rather than the repository listing: confirm the statamic/cms constraint, the illuminate/* constraint, and whether the widget registration API used matches the target Statamic major. Older Statamic 3 addons frequently fail silently on 4/5 because the widget contract or CP asset registration changed. Also confirm behavior under both file and redis cache stores, and under statamic.stache.watcher configurations.
Sequencing.
Maintenance. Code maintenance is near-zero; dependency maintenance is the actual cost. A single-release, zero-dependent package with an ambiguous publisher will not track Statamic majors on any schedule we can rely on. Pin the exact version, vendor it into the repository if policy allows (Composer path/vcs or a fork), and assign an owner who reviews it at each Statamic upgrade. Budget the fork as the expected end state, not the contingency.
Support. There is no vendor. Support is GitHub issues on a repository with no visible community, which in practice means self-support. Internal documentation should record which commands the widget runs so that an operator can reproduce the action manually during an incident.
Scaling. This is the weakest dimension. Statamic's Stache is file-based and node-local by default; a widget-triggered clear affects only the node that served the CP request. On a load-balanced deployment, operators will believe caches are cleared when they are not — a silent correctness problem that surfaces as stale content on a subset of requests. Either standardize on a shared cache store and a shared Stache strategy before enabling this, or restrict it to single-node environments. Separately, the clear itself is a load event: on a large site, a Stache rebuild triggered during peak traffic is a self-inflicted latency spike, so the widget's availability should be treated as a change-window tool rather than an everyday button.
Failure modes.
Ramp-up. Effectively zero for the operator — a button on a dashboard. That simplicity is the risk: the action is irreversible, the feedback is coarse, and the user is not required to understand what a Stache rebuild costs. Mitigations are cheap and should be mandatory: restrict to super users, add a confirmation step, return per-cache results rather than a single success toast, and document the multi-node caveat.
Recommendation. Do not adopt as a standing dependency at this time. The capability is worth having; this implementation is not well-evidenced. Confirm first whether Statamic's built-in Utilities → Cache already covers the need — if it does, the correct action is to close the request. If it does not, build the widget in-house (~1 day) against the same artisan commands, behind an explicit permission gate, and avoid taking on an unattributed, unadopted, single-release package for a privileged operation.
How can I help you explore Laravel packages today?