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

Uploadable Laravel Package

youshido/uploadable

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy on file/attachment handling. This package is a reference implementation of the "uploadable entity" pattern: a Doctrine entity holds a file field, and lifecycle listeners/event subscribers intercept persist/update/remove to move files, generate names, and clean up orphans. That pattern — not the code — is the reusable asset, and it maps directly onto decisions about whether to buy a media library or hand-roll upload behavior.
  • Roadmap hygiene / dependency triage. 1 star, 0 dependents, and a composite score of 0.065 place this squarely in "do not add to the dependency graph" territory. The opportunity signal (14.91) is a measure of the problem space (uploads are always painful), not evidence the package is viable. Use it to justify investment in a first-party upload abstraction rather than as a candidate.
  • Framework-fit audit. The package is a Symfony2 bundle targeting Doctrine entities, not a Laravel package. Bundles, Doctrine lifecycle events, and Symfony's DI container have no analog in Laravel's service-provider/Eloquent world. Any ticket proposing it for a Laravel codebase should be closed at intake — the flag here is a taxonomy error in the request itself, which is worth surfacing before engineering spends time on evaluation.
  • Architecture pattern selection. If the team is deciding between "file metadata on the entity" versus "separate media table + polymorphic relation," this codebase is a cheap case study in the tradeoffs of the former: simple to author, awkward to version, hard to reuse across entities without inheritance.
  • Legacy maintenance scoping. Relevant only if a Symfony2/early-Symfony3 application is in the maintenance portfolio — in which case the decision is "freeze, contain, and plan migration," not "extend."

When to Consider This Package

Consider it only if all of the following hold:

  • You are maintaining a Symfony 2.x application on Doctrine ORM where the bundle is already installed, and the question is whether to remove it — in which case read it to understand what breaks.
  • You need a worked example of wiring Doctrine prePersist/postPersist/preRemove listeners to filesystem operations, and you want to see one concrete implementation before designing your own. Read the source; do not require the package.
  • You are building a teaching artifact or migration reference for moving an entity-attached upload model to a dedicated media abstraction.

Look elsewhere — decisively — if any of the following apply:

  • The target is Laravel. It is not a Laravel package. No service provider, no Eloquent integration, no Storage facade awareness. The correct answers in that ecosystem are Spatie Media Library, Laravel's native Storage + HasMedia-style traits, or Livewire/Filament upload components. For image manipulation specifically, Intervention Image.
  • The target is modern Symfony (5/6/7). Symfony2 is end-of-life; bundles of this vintage predate autowiring, the Flex recipe system, and current Flysystem integration. VichUploaderBundle plus Flysystem is the maintained path.
  • You need security posture, CVE tracking, or a support contract. Single maintainer, no visible release cadence, negligible adoption. Zero dependents means zero downstream scrutiny — no one is finding its bugs for you.
  • You need MIME validation, virus scanning, chunked/resumable uploads, signed URLs, or CDN offloading. This is a thin behavior bundle; all of that is your problem.
  • You need cloud storage abstraction. Local-filesystem assumptions are typical of this generation of bundles.

How to Pitch It (Stakeholders)

To executives — one line: We evaluated this package and are recommending against adoption; the underlying idea is worth borrowing, the code is not.

The case, briefly:

  • It doesn't fit our stack. This is a Symfony2 bundle for Doctrine entities. Our applications are Laravel. Adopting it is not a configuration exercise — it is not possible without a rewrite, at which point we would have written our own.
  • It carries maintenance and security risk. One star, zero dependent projects, no meaningful release history. A dependency with no downstream users has no one stress-testing it; defects and vulnerabilities would surface in production, on our schedule, at our cost. For code that touches file uploads — a classic attack surface — that is the wrong risk profile.
  • The cost of the alternative is low. The maintained options in our ecosystem (Spatie Media Library, native Storage with a small trait) are mature, documented, and already familiar to the team. Building a thin internal upload abstraction is days, not weeks.
  • What we take from it: the design pattern — entity-attached file metadata plus lifecycle hooks for write and cleanup. That informs our own implementation and costs us nothing.

Ask: no procurement, no spike, no proof-of-concept. Close the evaluation as "pattern reviewed, package rejected," and route future upload work through the standard Laravel media tooling. If a legacy Symfony2 system is in scope, treat this as a contain-and-migrate item on the technical-debt register, not a capability to build on.

Risk of doing nothing: none to the roadmap. The only cost is that upload handling remains a per-feature decision until we standardize it — which is a good argument for a short internal standard, not for this package.

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.
unabomber/timezone
delatbabel/contacts
astritzeqiri/g-recaptcha
kevinongko/laravel-genode
developeruz/laravel-analytics
robbiep/afterthedeadline
frankkessler/incontact-laravel-oauth2-rest
jlxh/laravel-userlog
davidmgilo/timetables
qylinfly/role-permission
reflect-digital/conduit
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr