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

Media Bundle Laravel Package

kunstmaan/media-bundle

KunstmaanMediaBundle adds media management to Symfony CMS applications, letting editors upload, organize, and store images and files through an admin interface. It includes thumbnail generation, media folders, and integration with the Kunstmaan admin bundle for managing assets across your site.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor, and the mismatch is categorical. Despite being filed under "Laravel/PHP package," kunstmaan/media-bundle is a Symfony bundle, not a Composer library with a Laravel service provider. It assumes the Symfony full-stack runtime: DI container extension classes, Bundle registration in AppKernel, EventDispatcher hooks, Doctrine ORM entities declared via annotations, Symfony Form types, Twig templates that extend the Kunstmaan AdminBundle/NodeBundle layout, and bundle-level config merged through Configuration trees. There is no facade, no publishable config, no Laravel migrations, no MediaServiceProvider. None of the framework touchpoints have Laravel equivalents that are shimmable — a "bridge" would mean running two kernels in one process.

Integration feasibility — near zero as a dependency; moderate as a reference design. The domain model is genuinely reusable: a Media entity (name, UUID, location, content type, size, dimensions, metadata), a MediaFolder tree, a handler registry keyed by media type (image, video, audio, slideshow, file), named thumbnail set definitions, and a synchronous thumbnail generator. All of that maps cleanly onto Eloquent + Storage + Intervention Image + a queued job. That is a 1–2 week spike, not an integration.

Technical risk — high on every axis.

  • Dead third-party dependency: the headline feature (in-browser image editing) is Aviary, acquired by Adobe in 2014; the web widget and successor Creative SDK were retired in 2018. The editor UI is non-functional, and the bundle has no abstraction to swap it.
  • Frozen runtime: last release 2014-09-19, targeting PHP 5.x and Symfony 2.x (both EOL). PHP 8 will fatal on deprecated annotations, removed each()/mcrypt, and Doctrine annotation reader changes.
  • License ambiguity: NOASSERTION means GitHub could not identify the license file. Legal sign-off is blocked until counsel reads the actual LICENSE/headers — likely MIT given the Kunstmaan family, but "likely" is not an approval.
  • Zero dependents, 38 stars, score 0.55: no downstream validation, no security patching, no maintainer responsiveness. Effectively abandoned.
  • Transitive weight: pulling this in means pulling Kunstmaan/Bundles, NodeBundle, AdminBundle — a large, equally frozen graph.

Key questions for the requester:

  1. Is the target application actually Laravel, or is there an existing Kunstmaan/Symfony CMS this is meant to serve? The answer changes everything — if it's the latter, keep it and isolate it.
  2. Is the requirement digital asset management (folders, metadata, search, renditions) or simply upload and thumbnails? The latter is a solved problem in Laravel with mature, maintained packages.
  3. Is in-browser image editing a hard requirement? If so, budget for a hosted replacement (Cloudinary/Filestack/imgix, or a JS editor like Pintura) — not Aviary.
  4. Who owns maintenance for the next three years? If the answer is "the team that adopts it," the rebuild case wins on total cost.
  5. Has legal reviewed the NOASSERTION license header?

Integration Approach

Stack fit — no overlap. A modern Laravel target (Laravel 10/11, PHP 8.2+, Eloquent, Storage with S3, Intervention Image v3, queued jobs, CloudFront/imgix for delivery) shares no runtime contract with a Symfony 2.3–2.8 + Doctrine + Twig bundle. Plan for reimplementation informed by the source, not adoption of it.

Migration path.

  1. Extract the domain model into a short design doc: media types, handler contract, folder tree semantics, thumbnail set definitions, metadata fields.
  2. Implement as Media and MediaFolder Eloquent models with a polymorphic owner relation; store binaries via Storage::disk() and keep only paths/UUIDs in the DB.
  3. Define a MediaHandler interface with ImageHandler, VideoHandler, FileHandler implementations resolved through a registry keyed on MIME/type — this is the one idea from the bundle worth preserving verbatim.
  4. Port thumbnail sets to config/media.php (e.g. thumb: 100x100, teaser: 400x300), generated by a queued GenerateThumbnails job.
  5. If a legacy Kunstmaan CMS must stay live, run it as an isolated vhost/subdomain sharing an object store and CDN hostname. Do not attempt co-tenancy in one application.

Compatibility matrix (all rewrites, no shims). Doctrine annotations → Eloquent casts; Symfony Form types → FormRequests + validation rules; Twig + AdminBundle → Blade + Filament/Nova; EventDispatcher → Laravel events/listeners; bundle Configuration → config/*.php; Doctrine schema tool → Laravel migrations. The Aviary integration has no port — it must be replaced.

Sequencing.

  1. License and security audit (blocking, ~3 days).
  2. Requirements decomposition: upload, folder tree, renditions, crop/edit, delivery (1 week).
  3. Spike: Media model + Storage + Intervention, end-to-end upload and thumbnail render (1–2 weeks).
  4. Admin UI in Filament/Nova with folder tree and multi-file upload (2 weeks).
  5. Editor integration via hosted transform service or a JS editor (1 week).
  6. One-off migration of legacy asset metadata and binaries if applicable.
  7. Decommission the bundle.

Total realistic effort: 4–6 weeks, versus an integration that is not achievable at all.

Operational Impact

Maintenance — you would own 100% of it. The upstream is frozen: no commits of consequence since 2014, no security advisories, no release cadence. That is worse than "unmaintained" because the codebase also cannot receive fixes without a fork of the bundle and its entire dependency graph. A fork-and-maintain commitment is a multi-quarter line item; the rebuild is a sprint.

Support — effectively no escalation path. No vendor, negligible community, sparse Q&A coverage for the Kunstmaan stack. Any production incident routes directly to your own engineers with no upstream recourse.

Scaling — the model fights modern infrastructure. Files are addressed by filesystem path with no storage abstraction, so horizontal scale requires NFS or a bespoke S3 shim. Thumbnail generation runs synchronously on upload, so large assets risk request timeouts and memory exhaustion (GD/Imagick) with no queue offload. There is no CDN or transform-URL abstraction. A Laravel rebuild — Storage::disk('s3') + queued jobs + signed transform URLs — is strictly superior on every one of these dimensions.

Failure modes to expect.

  • Aviary endpoint dead → editor UI fails silently or greys out; users report "editing doesn't work" with no error surfaced.
  • PHP 8 upgrade → fatal errors from deprecated annotations and removed functions.
  • Doctrine schema drift between bundle version and database during any upgrade attempt.
  • Orphaned binaries when a filesystem move succeeds but the DB transaction rolls back.
  • Filename collisions and non-ASCII path handling on the flat storage layout.
  • GD/Imagick memory blowups on large uploads with no size guard.
  • Legal hold from the NOASSERTION license blocking release.

Ramp-up. A Laravel developer needs roughly 2–3 weeks of Symfony 2 idiom immersion before being productive in this source, and that investment is non-transferable to the rebuild. The reverse — reading the source as a design reference and writing Laravel — is a single afternoon. Budget the rebuild, not the ramp-up.

Bottom line. Score 0.55 with zero dependents, an EOL framework, a discontinued editing service, and an unverified license is a coherent signal: do not adopt. Use the package as a specification artifact, reimplement the media handler registry and thumbnail-set concepts natively, and replace the editing feature with a maintained hosted service.

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.
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator