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.
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.
each()/mcrypt, and Doctrine annotation reader changes.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.Key questions for the requester:
NOASSERTION license header?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.
Media and MediaFolder Eloquent models with a polymorphic owner relation; store binaries via Storage::disk() and keep only paths/UUIDs in the DB.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.config/media.php (e.g. thumb: 100x100, teaser: 400x300), generated by a queued GenerateThumbnails job.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.
Media model + Storage + Intervention, end-to-end upload and thumbnail render (1–2 weeks).Total realistic effort: 4–6 weeks, versus an integration that is not achievable at all.
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.
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.
How can I help you explore Laravel packages today?