backstage/filament-uploadcare-field
Integrates Uploadcare into Filament forms for Laravel apps. This package provides a ready-made form field that lets users upload, select, and manage Uploadcare files and images inside your admin panels, saving you from writing custom components and upload logic.
Architecture fit
The package is a Filament form field (FileUpload-style component) that delegates file storage and delivery to Uploadcare. Architecturally it sits in the presentation layer of a Laravel app: it extends Filament's Field API and persists a scalar (Uploadcare CDN URL or file UUID) onto an Eloquent model column. That is a clean, low-coupling fit for any Laravel + Filament admin panel that already treats uploads as a string column, and it removes the app server from the file-serving path entirely. It is a narrow, single-purpose component — it does not cover Uploadcare's groups, image transformations, signed/private files, webhook-driven processing, or non-Filament upload surfaces (public API, customer-facing forms, Livewire outside Filament). Any of those needs a separate integration.
Integration feasibility
Feasible in principle: Composer install, supply an Uploadcare public key (and secret, if signed uploads are supported), register the field in a Filament form schema. The real work is verification, not implementation. Because this repo is a [READ ONLY] subtree split of backstage/cms, the artifact we consume is generated, not authored — the composer.json, autoload mapping, and dependency constraints are produced by the split process and should be inspected directly rather than assumed. Confirm which Filament major version is supported, whether credentials come from config/env or are passed per-field, and what exactly lands in the model column.
Technical risk
backstage/cms. We cannot patch upstream through this repo. Split history can also be regenerated/force-pushed, which is a supply-chain concern for VCS-based installs (dist installs are safer).Key questions
composer.json?Stack fit
Best fit: an existing Laravel + Filament admin where the team already accepts Filament third-party fields. It slots into resource forms, custom pages, and Filament actions with no architectural change. It is a poor fit if uploads also need to happen outside Filament, if the app must own file bytes (compliance, on-prem, air-gapped), or if we already have a working S3-backed FileUpload — in that case the value is CDN delivery + transformations, which can be had without adopting an unproven field package.
Migration path
Treat this as additive, not substitutive. Do not retrofit it over existing FileUpload columns, because the persisted value format differs (CDN URL/UUID vs disk path) and every read site — accessors, API resources, image renderers, exports — would need to change in lockstep. The safe path: introduce it on one greenfield resource, keep existing uploads on the current disk, and only consider back-filling assets after a successful pilot. If adoption proceeds broadly, plan a data migration that copies bytes into Uploadcare and writes the new value shape, with a rollback that retains the original paths.
Compatibility
composer.json before estimating.PanelProvider plugin or a bare field class — this changes the upgrade surface.script-src will silently break the field.composer.lock so a split rewrite cannot alter our resolved artifact.Sequencing
FileUpload + S3 + a CDN in front. If the only differentiator is the Uploadcare widget, prefer the native path.Maintenance
Ongoing maintenance cost is likely to be ours, not upstream's. With 0 dependents and a read-only split, assume no timely fixes. The pragmatic posture if we adopt: wrap the field in a first-party adapter class (or fork into our own namespace) so the package is swappable in one file, and budget explicitly for a Filament v4 migration and for Uploadcare API/widget deprecations. Vendor the dist artifact rather than tracking a VCS branch.
Support
Community-only, single maintainer, no SLA, no documented escalation. Uploadcare support is a separate contract and will not help with the Filament component. Internally, we need a named owner — this package is small enough to become orphaned knowledge in a sprint or two.
Scaling
Uploads and delivery scale well by construction: bytes never touch our app servers, and the CDN handles read traffic. Cost scales with Uploadcare plan tiers (bandwidth + transformations), so growth is a finance conversation rather than an infrastructure one. The app-side cost is per-render: the widget JS loads on every form page containing the field, which is measurable on slow admin connections and worth capturing in the pilot. Eloquent-side load is negligible (one string column).
Failure modes
composer update; dist installs are insulated.Mitigations worth building ourselves: a health check that asserts the key is configured, an <img>/link fallback for dead assets, and a documented "remove the package" runbook.
Ramp-up
Low for anyone fluent in Filament custom fields — the component itself is an afternoon. The steeper curve is Uploadcare's model (groups, transformations, signed uploads, webhooks, retention), which is where the real design decisions live. Two knowledge silos to avoid: (1) one developer being the only person who has wired a Filament custom field, and (2) one developer being the only person who understands our Uploadcare project config. Given the package's immaturity, the honest ramp-up estimate for safe adoption — including vendor review, pilot, and fallback design — is closer to one to two weeks of part-time effort than the one-day install implies.
How can I help you explore Laravel packages today?