devwizardhq/laravel-filex
Laravel Filex is a Dropzone.js-powered Blade component for Laravel with drag-and-drop uploads, chunked large-file transfers, real-time progress, multi-layer validation, quarantine security, temp storage, and auto cleanup.
Architecture fit
temp/ prefix on a local disk, the form submits string paths rather than UploadedFile objects, and the controller is responsible for promoting those strings to permanent storage via HasFilex::moveFile() / moveFiles() or the Filex facade.$request->file('x')->store(), and that muscle memory is now wrong for these fields. The bundled SKILL.md explicitly calls this out as the top anti-pattern, which tells you the author knows it is the main adoption hazard.Integration feasibility
php artisan filex:install, one @filexAssets directive in the layout, and a Blade component tag. A single form can be working in under an hour.Technical risk
ValidFileUpload rule specifically to prevent temp/../../ traversal is a good sign that the author has thought about it — and a reminder that a naive starts_with:temp/ check is exploitable.<x-filex-uploader> and every controller using the trait would need rewriting to leave. Lock-in is in code shape, not in stored bytes. That is the more tolerable kind.Key questions
Stack fit
Migration path
UploadService wrapper plus a shared FormRequest base that owns the ValidFileUpload rules and the moveFile/moveFiles calls. Controllers depend on our interface, not on HasFilex. If we later swap the package out, we rewrite one class instead of forty controllers. This is the single highest-leverage decision in the whole integration.config/filex.php, publish assets as an explicit build step rather than relying on auto-publish, and add the published asset directory to the code review surface.Compatibility
composer update. A low-adoption package with a fast-moving API is precisely where a silent patch bump can change validation defaults.Sequencing
value prop on an edit form.ValidFileUpload, test oversized and mislabeled files, and verify what quarantine actually does. Do not proceed past this gate on the basis of README claims.Maintenance
filex:cleanup-temp) that must be registered in the scheduler, and a package API that may churn. None of this is onerous individually; together it is a real, recurring line item for a component that native Laravel would have covered with two lines in a controller.Support
$request->file() out of habit, and the missing @filexAssets directive causing uploads to fail silently. Both are documentation and code-review problems, and both are cheap to eliminate with a review checklist and a single canonical example in the internal docs.Scaling
Failure modes to instrument
@filexAssets → silent upload failure with no server-side signal. Front-end error logging is the only detector.moveFiles() — the FilexResult object distinguishes successful and failed paths, which is good design, but only if the calling code checks it. Mandate the isAllSuccess() check in the wrapper.Ramp-up
SKILL.md is unusually good — it is essentially an agent-facing style guide with an explicit anti-pattern table. That materially reduces onboarding cost and is one of the strongest signals in the package's favor. Reuse it as the basis for the internal doc rather than writing from scratch, but independently verify its security guidance before treating it as authoritative.How can I help you explore Laravel packages today?