arxy/files
Arxy Files simplifies file management in PHP apps with FlySystem: store files anywhere, persist metadata in the database, and deduplicate uploads using MD5 checksums. Automatic upload/delete hooks and flexible naming strategies keep entities in sync.
postPersist uploads, preRemove deletes), a Symfony form type + validation constraints, and a DownloadUtility for controller responses. This is the classic "don't spend sprint capacity reinventing attachment handling" decision.DownloadableFile and the controller path support authenticated/forced-download flows. That's the decision fork between public media and gated documents.SplitHash, Date, UuidV5, decorators) and the embeddable-vs-entity file model as configuration choices to standardize early, which prevents a per-feature "each team invents its own upload path" sprawl.arxy/files is a Symfony bundle built on Doctrine ORM. The README states plainly: "Currently, only Doctrine ORM is supported as persistence layer." There is no Eloquent driver, no Laravel service provider, no Laravel validation integration. If the target stack is Laravel, this is not adoptable as-is — it is at best a reference architecture to port.postPersist, i.e., synchronously in the request. Large files, presigned S3 PUTs, and queued processing are outside its design.To executives: "We need file uploads in N features this quarter. This library gives us the boring, risky parts for free under MIT — storage abstraction, de-duplication, database tracking, and automatic cleanup when records are deleted. The catch is it's a small, low-adoption open-source project built for Symfony, not our Laravel stack, and it has essentially zero downstream users. Recommendation: do not take a dependency on it for anything customer-critical. Either use it as a proven design blueprint and build the ~3-day equivalent ourselves, or adopt it only in a low-blast-radius internal tool with the version pinned and the code vendored so a maintainer walking away can't break us."
To engineering: "It's a Symfony bundle over Doctrine ORM + Flysystem — worth reading for the patterns, not for composer require. Steal these three ideas: (1) store file metadata in our own table so files are queryable and joinable; (2) hash-based dedupe so identical uploads don't multiply storage cost; (3) hook upload on persist and delete on remove so orphaned blobs never accumulate. Skip its synchronous-on-flush upload model — we want presigned direct-to-S3 plus a queued post-process step. The naming-strategy abstraction is genuinely good; the LiipImagine and serializer snippets are illustrative, not supported."
Ask: timebox a spike to confirm the dedupe + metadata schema against our actual storage target before we commit either way.
How can I help you explore Laravel packages today?