Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova File Manager Laravel Package

oneduo/nova-file-manager

Oneduo Nova File Manager adds a complete file browser to Laravel Nova: upload, preview, rename, move, delete, and organize files and folders across multiple storage disks, with drag-and-drop uploads and a clean, native Nova interface for managing assets and media in your admin panel.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for admin-side file handling. If your product already runs Laravel Nova, this package replaces a bespoke file browser (upload, folder tree, rename/move/delete, preview, multi-disk support) that would otherwise cost 2–4 engineer-weeks to build and permanently own. Decision: buy, and redirect that engineering capacity to core product.
  • Feature scoping for content/media workflows. It moves "rich media management in the admin" from a roadmap item to a same-sprint deliverable. This lets you commit to customer-facing promises like "marketing can upload and organize campaign assets without a developer" without a dedicated DAM project.
  • Roadmap sequencing. A file manager is usually a prerequisite for other features (blog/CMS modules, product image galleries, document libraries, downloadable resources). Adopting this unblocks downstream roadmap items cheaply instead of gating them behind custom admin tooling.
  • Internal-tools and back-office use cases. Best fit where the file UI is for operators (support, ops, content editors), not end users: attaching documents to records, managing per-tenant logos/branding, bulk-uploading import files, curating downloadable assets.
  • Make-vs-integrate for storage. Supports multiple storage disks, so it supports the decision to standardize on Laravel's filesystem abstraction (local + S3-compatible) rather than introducing a third-party DAM vendor (Cloudinary, Bynder) at this stage — a meaningful cost avoidance decision.
  • Risk acceptance decision. Choosing it means formally accepting single-maintainer dependency for a non-differentiating capability; that's a legitimate PM call, but it should be recorded, not implicit. The v1.0.0 release materially improves this calculus: crossing from 0.x to 1.0 is the maintainer's public commitment to semantic versioning, which converts "the API may churn under us at any time" into "breaking changes are announced and batched." That is the specific risk we were most exposed to, and it is now substantially reduced — though it does not reduce bus-factor risk.
  • Upgrade-window planning (new). The 0.16 → 1.0 jump is, by semver convention, a breaking release. Any team already on a 0.x version now faces a discrete, schedulable migration decision rather than an ambient drift risk. That is a planning benefit, but it needs a slot on the roadmap — budget it, don't let it ambush a sprint.

When to Consider This Package

Adopt when all of these hold:

  • You are already running Laravel Nova and are committed to it for at least the next 12–18 months (this package has no value outside Nova).
  • Your file needs are CRUD-plus-preview: upload, organize in folders, move/rename/delete, browse across disks. Not transformations, not versioning, not approval workflows.
  • The audience is internal staff, where a functional-but-opinionated UI is acceptable and you don't need brand-perfect design.
  • Your team is small enough that owning an admin file UI is a real tax, and the capability is not a differentiator.
  • You have verified Nova major-version and Laravel/PHP compatibility against your installed versions — and can pin the package version accordingly. On v1.0.0, pin ^1.0.
  • You are installing fresh, or you have read the 0.16 → 1.0 changelog. For greenfield adoption, prefer v1.0.0 over any 0.x line — you get the semver contract from day one. For existing 0.x installs, treat the upgrade as a scoped migration task: read the full changelog for renamed/removed APIs and config keys, and smoke-test uploads, folder operations, and multi-disk browsing before merging.

Look elsewhere / build your own when:

  • You're not on Nova. For Filament, use Filament's native media/file managers; for custom frontends, use a JS uploader (Uppy, FilePond) plus your own API. This package is not a general-purpose library.
  • You need image transformation, responsive derivatives, or CDN optimization — pair with or replace by a media library (Spatie Media Library, Intervention) or a hosted DAM.
  • You need governance: versioning, audit trail, retention policies, approval workflows, granular per-file permissions, virus scanning. This is a browser, not a records-management system.
  • Multi-tenant isolation is a hard requirement and must be enforced at the storage/permission layer — validate before committing; don't assume.
  • Dependency risk is unacceptable (0 listed dependents, small star count, single-maintainer signal). v1.0.0 reduces API-instability risk but does nothing for abandonment risk; for a regulated or long-lived product, a 200-line in-house Nova tool may still be the lower-risk choice.
  • You'd have to upgrade Nova to use it — never let a small utility drive a paid platform migration.

How to Pitch It (Stakeholders)

For executives (30 seconds): "Our admin panel runs on Laravel Nova. This MIT-licensed add-on gives our staff a complete file manager — upload, folders, previews, multi-cloud storage — for effectively zero build cost. It replaces roughly three weeks of engineering we'd otherwise spend reimplementing a solved problem, and it unblocks the content-management features on our roadmap. It just shipped a 1.0 release, which means the maintainer has committed to a stable, versioned API — the upgrade path is now predictable rather than open-ended. Total cost of ownership is license-free; our remaining exposure is that it's maintained by a small team, so we're pinning to the 1.0 line and keeping a build-it-ourselves fallback documented."

For engineering (the honest version):

  • What it is: A Nova tool/field providing a full file-browsing UI backed by Laravel's filesystem disks, MIT-licensed, now at v1.0.0 (up from v0.16.0).
  • What changed: v1.0.0 is a major-version release. Semver convention says to expect breaking changes between 0.16 and 1.0 — read the full changelog (v0.16.0...v1.0.0) before upgrading, and assume nothing about config keys, namespaces, or tool registration. The upside is the stable-API commitment; the cost is a one-time migration.
  • Why we're not building it: It's undifferentiated plumbing. Our differentiation is elsewhere.
  • What we must own anyway: Upload validation (MIME/extension allowlists, size caps, path-traversal checks), disk ACLs and private-file access via signed/temporary URLs, and per-role authorization inside Nova. The package provides the UI; we provide the security posture.
  • Risk register: single-maintainer bus factor (unchanged by 1.0); tight coupling to Nova major versions (upgrade path is a real cost, but now versioned and predictable); low adoption signal means we should expect to read the source, not just the docs.
  • Mitigation: pin ^1.0, wrap it behind our own Nova tool where practical, read the 0.16 → 1.0 changelog and smoke-test before any upgrade, re-test each Nova bump, and timebox a fallback (a minimal custom Nova file field) at ~1–2 weeks if the dependency stalls.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource