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

Fluppy Laravel Package

saade/fluppy

Fluppy is a lightweight Laravel package for handling file uploads with a fluent, chainable API. It simplifies validation, storage, and cleanup while staying out of your way.

View on GitHub
Deep Wiki
Context7

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.

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