unifilemanager/core
A Laravel/PHP core package for unified file management, providing shared foundations for browsing, uploading, storing, and organizing files across multiple disks and storage adapters with a consistent API.
UniFileManager/core is early-stage (v0.1.x) — expect the API surface to move. Start by reading the README and the config/unifilemanager.php file rather than the source; the config exposes the storage driver selection, which is the first thing you'll touch.
Minimal setup:
composer require unifilemanager/corephp artisan vendor:publish --tag=unifilemanager-configconfig/filesystems.php (or the package config, depending on driver) — as of v0.1.4, Kamalia object storage is now a supported listing backend, so you can point the package at a Kamalia bucket alongside the existing S3/local drivers.If you're on v0.1.3 or earlier and using Kamalia, you were previously limited — v0.1.4 is the release that makes Kamalia object listing a first-class path.
Resolve, don't instantiate. Bind the manager through the container or facade so swapping drivers per-environment stays a config change. This matters more here than in mature packages because adapter coverage is still growing (Kamalia just landed).
Listing objects:
->all() into memory.Cache::remember with a short TTL) if you're rendering file pickers; object store list calls are the slow part of any UI.Per-environment driver config:
// config/unifilemanager.php
'driver' => env('UNIFILE_DRIVER', 'local'),
Keep Kamalia credentials (endpoint, key, secret, bucket/container) in env() and mirror them in config/filesystems.php if the package delegates to Laravel's filesystem layer — that way Storage::disk('kamalia') and the package stay consistent.
Service-layer pattern. Wrap listing/copy/move operations in your own FileRepository so the day a v0.2 changes a method signature, you patch one class instead of 30 call sites. In a 0.1.x package this is not optional.
Queued jobs for bulk operations. Any copy/delete/migrate across buckets should go through a job with tries and backoff; object stores rate-limit and transiently 5xx.
Integration tip: version-pin with "unifilemanager/core": "~0.1.4" — tilde, not caret, until the package reaches 1.0. Test upgrades in staging against a real bucket.
PR #1 before upgrading if you depend on the listing API.try/catch around UnsupportedOperation-style exceptions.php artisan config:clear — config:cache in production will happily serve stale credentials.How can I help you explore Laravel packages today?