Product Decisions This Supports
- Build vs. buy for file-upload UX. Fluppy replaces a hand-rolled chunked-upload implementation with a drop-in Filament field. The decision it informs: do we spend engineering sprints building resumable uploads, retry logic, and cloud-source pickers, or adopt a maintained MIT package and spend that capacity on core product?
- Feature: large-file and media-heavy workflows. Chunked uploads with pause/resume/retry, and resumption after a tab reload, make it viable to support large assets (video, design files, datasets) in admin panels without raising PHP/webserver upload limits or adding a tus/Companion server.
- Storage architecture decisions. Direct-to-S3 multipart uploads via Livewire's temporary disk change the calculus on upload bandwidth, server memory, and timeouts — a lever for infrastructure cost and reliability decisions.
- Feature: import-from-anywhere. Camera, microphone, screen capture, URL, app disks, Google Drive/Photos, Dropbox, OneDrive, Box, Zoom, and Facebook sources open up roadmap options (e.g., "import from Drive") that would otherwise be multi-week integrations. No Companion server means no new service to operate.
- Roadmap: AI media features. Fluppy Pro (paid) bundles AI image generation/editing, stock photos, icons, GIFs, signatures, QR codes, maps, templates, and TTS, plus a class+Blade extension point for custom sources. This is a concrete buy-vs-build input for any AI/media roadmap item.
- Standardization on Filament. Because it extends Filament's own
FileUpload, existing validation rules, disks, and options carry over — a low-risk path to standardizing upload UX across modals, slide-overs, repeaters, builders, relation managers, and table actions.
- Operational investment sizing.
fluppy:doctor (checks Livewire, PHP, web server, bucket CORS) and fluppy:prune (cleans up abandoned uploads) tell us the ops burden is bounded and diagnosable, not a black box.
- Buy-vs-build for niche sources. Pro's ready-made sources (signatures, QR codes, maps) are the kind of long-tail feature requests that rarely justify in-house work; this gives a priced alternative.
When to Consider This Package
Consider it when:
- You are on Filament 4 or 5 and PHP 8.2+ (hard requirements — no backport path).
- Your users upload files that exceed a single-request limit, or uploads fail on flaky connections and you need pause/resume/retry.
- You want S3 multipart uploads without building the client-side orchestration or running a Companion/tus server.
- Cloud-import sources (Drive, Dropbox, OneDrive, Box, camera, mic, screen, URL) are on your roadmap or already requested.
- You need the field to behave natively inside Filament constructs — repeaters, builders, relation managers, table actions, modals — and to respect panel theming, dark mode, and locale.
- You use Spatie Media Library and want the provided
SpatieMediaLibraryFluppyField.
- Your team is small enough that "one word change from
FileUpload" is worth more than bespoke control.
Look elsewhere when:
- You are on Filament 3 or earlier, or PHP < 8.2 — adoption is blocked until you upgrade.
- Your upload surface is outside Filament (public-facing app forms, APIs, non-admin UIs). Fluppy is a form field; it is not a general upload service.
- You cannot add the required CSS
@import/@source lines to a custom panel theme and rebuild assets (e.g., locked-down build pipelines, no custom theme).
- You need a protocol-level guarantee across arbitrary clients (server-side tus/resumable endpoints consumed by mobile apps) rather than a Filament UI component.
- You require vendor SLAs, indemnification, or commercial support. This is a v1.0.0, MIT-licensed package with a single maintainer — treat it as a dependency risk to be assessed, and pin versions.
- Pro-only capabilities (AI generation/editing, custom class+Blade sources, stock/icon/GIF/signature/QR/map/TTS sources) are must-haves; budget for the paid package and review its licensing terms separately.
- Your environment can't satisfy the pre-flight checklist for large uploads (bucket CORS, proxy body limits, timeouts) and you lack the appetite to run
fluppy:doctor and act on it.
How to Pitch It (Stakeholders)
For executives: Fluppy closes a recurring product gap — reliable large-file uploads — for roughly the cost of a composer require and a CSS import. It converts what is normally a multi-sprint build (resumable chunked uploads, retry logic, direct-to-S3 multipart, a dozen third-party import sources) into a configuration change on a field we already use. It is MIT-licensed, so lock-in is low and exit cost is minimal; a paid Pro tier exists for AI and long-tail media sources if the roadmap calls for them.
For engineering: It subclasses Filament's FileUpload, so existing disks, validation, and options are preserved — migration is a one-line swap per field. It requires PHP 8.2+ and Filament 4/5, plus theme CSS registration (@import + @source) and an asset rebuild. It eliminates the need to operate an Uppy Companion server; the Laravel app does the work. Two Artisan commands cover the operational edges: fluppy:doctor validates Livewire/PHP/webserver/bucket-CORS readiness, and fluppy:prune garbage-collects abandoned uploads.
Risks to flag: v1.0.0 maturity, single-maintainer bus factor, a hard version floor that may force a Filament/PHP upgrade, and a build-pipeline dependency on the custom theme. Mitigations: pin to ^1.0, pilot on one non-critical panel resource, run fluppy:doctor in staging before rollout, and treat Pro as a separate commercial decision rather than an assumed upgrade.