blalmal10a/free-upload
Free Upload is a Laravel package that simplifies file uploads by providing helpers for validation, storage, and retrieval, so you can add upload handling to your application with minimal configuration and less boilerplate.
proxy_base_url), an eventual migration to S3/R2 is a proxy-controller swap rather than a data migration across every model and view. That materially lowers the cost of postponing the decision — a legitimate "we'll revisit at scale" bet.media-server.kawnek.workers.dev worker with an in-app proxy — that's a genuine reduction in blast radius and worth reflecting as a lowered risk line in the roadmap, while the remaining dependency on FreeImage.host stays on the vendor register.Good fit when:
$wire.set(...) state handling means no glue code.upload_endpoint, proxy_base_url, image_path, files_path, proxy_timeout, and route prefix/middleware all being env- or config-driven means you can point this at your own paths without forking.Look elsewhere when:
proxy_timeout become your problem. High-traffic or large-file workloads belong on S3/R2 with direct uploads and a CDN.ext-gd across environments.To executives (30 seconds): This is a free, open-source building block that lets us add image and file uploads to our admin interfaces in days rather than weeks, with no cloud storage bill and no new infrastructure to operate. It just reached its first stable release and no longer depends on a third-party file server we don't control — files are now served through our own application. The trade-off is that the underlying image hosting is a free external service, so I'd position it as the right choice for internal tools, prototypes, and non-sensitive content, and budget a swap to managed storage once uploads become customer-critical or regulated.
To engineering: v1.0.0 is a legitimate adoption candidate. The FreeUploadFileController + Proxy removes the media-server.kawnek.workers.dev dependency, which was the biggest architectural wart. Endpoints are config-driven, state stays native to Filament via $wire.set, the component is publishable (freeupload:publish-component and the vendor stub with a namespace placeholder) so we can fork and own the markup if needed, and there's a real Pest suite (43 tests / 99 assertions) covering the proxy, the decoder, the controllers, and the component. Requirements are PHP ^8.2 with ext-gd, Laravel 11–13, Filament 4–5. Two things to design around up front: the proxy makes our app the file server, so plan for bandwidth and worker-time costs, and non-image files are encoded to PNG in the browser rather than stored natively — don't put it behind document workflows. The clean exit is a custom proxy controller, since stored URLs already point at us.
To security/legal: before this appears in any customer-facing or regulated surface, we need a written position on files transiting FreeImage.host, the absence of scanning and lifecycle guarantees, and what we do if that host changes its terms or disappears. The v1.0.0 proxy reduces our exposure but does not remove the dependency.
How can I help you explore Laravel packages today?