webid/nova-filemanager
A file manager tool for Laravel Nova that lets you browse, upload, rename, and organize files and folders directly inside your admin panel. Navigate directories, preview media, and handle uploads without leaving Nova or writing custom code. Simple to install and configure via Composer.
Architecture fit. The package is a Laravel Nova "Tool" — the standard Nova extension pattern where a package ships a service provider, a Tool class registered in NovaServiceProvider::tools(), routes mounted under Nova's authenticated middleware stack, and Vue components compiled into Nova's asset pipeline. Architecturally this is idiomatic for the ecosystem: it does not touch application domain code, it sits entirely inside the admin surface, and installation/removal is a composer require plus one registration line. That containment is the main architectural virtue — blast radius is limited to the Nova admin panel, not the customer-facing app.
Integration feasibility. Low-to-moderate engineering effort but non-trivial gating. The hard requirements are: (1) the organization actually runs Laravel Nova (a paid, per-seat product — confirm licensing and seat count before anything else); (2) Nova major version compatibility, since Nova 4/5 moved to Vue 3 and changed tool/asset conventions, and a 1-star package is unlikely to have tracked that; (3) PHP/Laravel version constraints in composer.json against our runtime. Because the package is unmaintained in practice, expect to fork and vendor it rather than consume it from Packagist.
Technical risk. This is the dominant concern and it is concentrated in security, not functionality. A file manager embedded in an admin panel is, by definition, a filesystem read/write surface reachable by every Nova user. The specific risks a TPM must have answered before approval:
../ or escape the configured disk root? Is the allowed-path list enforced server-side on every endpoint, not just hidden in the UI?Gate/policy on the tool, but file-level authorization (per-user, per-directory) is usually absent in packages of this size. Who can delete?Key questions.
File field, or a better-maintained alternative?Stack fit. Suitable only if the stack is Laravel + Nova and the need is genuinely "browse/manage files inside the admin panel." It is a poor fit for anything requiring a document management domain model (versioning, metadata, permissions, audit trails) — this class of tool is a filesystem browser, not a DMS. If the underlying need is asset attachment on models, Nova's native File/Image fields are the correct answer and this package is redundant.
Migration path. Two realistic paths:
nova-files, non-public, non-production-critical).Compatibility. Assume breakage at every Nova major upgrade. Mitigate by vendoring the fork under our own namespace with an explicit nova version constraint, and by treating it as an internal package rather than a public dependency. Also verify asset publishing behavior — Nova tools frequently fail silently when vendor:publish isn't rerun after deploy.
Sequencing.
Gate restricted to a named admin role, disabled in production write mode initially.Maintenance. Effectively 100% internal ownership from day one. With 1 star and 0 dependents there is no meaningful upstream community, no release cadence to rely on, and no expectation that a Nova or Laravel upgrade will be absorbed for us. Budget a small but recurring allocation — realistically a few days per year for compatibility bumps plus whatever incident work arises. This is acceptable only because the surface area is small.
Support. None beyond the maintainer's goodwill. No SLA, no issue triage, no security disclosure process. If an advisory lands against file-upload handling, we will hear about it from our own scanning, not from the package. That argues for the fork living inside our normal dependency-scanning perimeter.
Scaling. The tool's cost scales with directory size, not user count. Large directories can produce slow listings and memory pressure, especially over S3 where each listing is a network round trip. Concurrency is a real hazard: two admins deleting or renaming simultaneously against the same tree, with no locking. Keep scoped directories small and treat it as an admin convenience, not a bulk-ingest tool.
Failure modes.
Ramp-up. Low for end users — a file browser is self-explanatory. Moderate for engineers — the work isn't learning the package, it's learning Nova's tool/asset conventions well enough to debug and maintain the fork. One engineer with Nova experience covers it.
Recommendation. Do not adopt as a production dependency on its current signals. Adopt only as a forked, internally-owned, tightly-scoped admin tool after a source audit — or, preferably, first confirm Nova's native file fields don't already satisfy the requirement, since that removes this risk entirely.
How can I help you explore Laravel packages today?