zenstruck/filesystem
Zenstruck Filesystem is a Symfony bundle for attaching files and images to Doctrine entities. It handles storage via Flysystem adapters, image transformations, metadata, and automatic orphan cleanup, keeping file management clean and testable.
File/Image value objects, Doctrine mapping, orphan cleanup — maps directly to a recurring roadmap item (avatars, documents, product galleries, CMS assets) that most products hit in their first year.laravel-medialibrary-style layer.spatie/laravel-medialibrary, plank/laravel-mediable) should be the actual candidates.To executives (one paragraph): We evaluated a mature pattern for handling file and image uploads in our backend. The package itself is Symfony-specific and small (roughly 43 GitHub stars), so we should not treat it as a long-term vendor dependency — but it encodes a clean, proven design: uploads become first-class objects, storage is swappable between local and cloud, unused files are cleaned up automatically, and behavior is easy to test. For a Laravel codebase the recommendation is to adopt the pattern via a maintained Laravel-native library, or replicate the four design ideas internally. The decision is low-cost either way, and it removes a recurring source of bugs, storage leakage, and compliance exposure around deleted media. We do not recommend taking a hard dependency on this specific package unless we are a Symfony shop.
To engineering (bullet form):
File/Image value objects to Doctrine entities and manages persistence, deletion, and orphan cleanup automatically.Risks to state plainly: Framework mismatch (primary blocker for Laravel), low star count and maintenance concentration risk, and unknown long-term support. These are the reasons the recommendation is pattern adoption rather than dependency adoption.
How can I help you explore Laravel packages today?