teltek/pumukit-lms-bundle
Symfony bundle that connects Pumukit, the open-source video management platform, with learning management systems. It helps publish and embed Pumukit video resources into LMS courses, simplifying access to lecture recordings and multimedia learning content for students and instructors.
Architecture fit — the headline finding: Despite being scoped as a Laravel/PHP package, teltek/pumukit-lms-bundle is a Symfony bundle, not a Laravel package. PuMuKIT is a Symfony-based video/lecture-capture platform (maintained by Teltek, UPV), and this bundle is the LMS-integration layer that bolts LTI-based video embedding into a PuMuKIT instance. It assumes Symfony's kernel/bundle registration, the Symfony DI container, Doctrine ORM entities and migrations, Symfony routing and security firewalls, Twig templating, and PuMuKIT's own sibling bundles (pumukit/core-bundle, schema-bundle, paella-bundle, etc.). None of that maps onto Laravel's service providers, Eloquent, Blade, or HTTP kernel. There is no adapter layer, no framework-agnostic core, and no Laravel service provider shipped. Installing it into a Laravel app via Composer will autoload classes but will not produce a working integration — the bundle has no entry point Laravel can drive.
Integration feasibility: Feasible only in one of two shapes. (1) Only if the host application is PuMuKIT — then this bundle is a natural, first-class fit and the integration cost is configuration, not code. (2) If the host is Laravel — then this package must not be vendored. Instead, treat PuMuKIT as a separate LTI tool service and integrate Laravel with it over the LTI protocol (or PuMuKIT's REST/API surface), keeping the two runtimes in separate containers. That is a legitimate architecture, but note that in that shape the bundle itself is an implementation detail inside the sidecar and your team never depends on its code directly.
Technical risk:
Key questions to resolve before committing:
composer.json declare, and is the bundle actively released (commit recency, tagged releases, open-issue backlog)?Stack fit. Misaligned by default for a Laravel shop. The bundle's dependency graph pulls Symfony components, Doctrine, and PuMuKIT siblings — a parallel framework runtime inside a Laravel monolith is not a tenable steady state. The correct fit is service-oriented: Laravel remains the product/portal; PuMuKIT (with this bundle) runs as an independent LTI tool service behind its own domain and database.
Migration path. Do not attempt a code-level port. Instead:
If the org's actual goal is "Laravel app needs to talk to an LMS," the more defensible path is to skip this package entirely and integrate Laravel directly into the LMS via an LTI 1.3 library or the LMS's native REST API (Moodle web services, Canvas API). That gives you a single-stack solution and avoids the entire Symfony/PuMuKIT dependency tree.
Compatibility. Verify three things in a spike: (a) the bundle's Symfony/PHP ceiling versus your container base image, (b) Doctrine schema migrations against a clean database, (c) LTI version negotiated by your LMS. Any of these failing is a stop-ship signal, not a workaround candidate.
Sequencing.
Maintenance. You are adopting a codebase you likely cannot rely on upstream to keep current. Budget for a fork-and-own posture: pin the version, vendor the source into your artifact registry, and assume you will apply Symfony/PHP compatibility patches yourself if the platform version advances. Track upstream commits, but do not depend on them for security fixes.
Support. Community support is effectively nil (2 stars, 0 dependents). Teltek offers commercial support for PuMuKIT — treat that as a required line item if the integration becomes business-critical, and price it against the alternative of a native LTI integration. Internal knowledge concentration is a real risk: plan for at least two engineers with hands-on exposure, not one.
Scaling. Two distinct scaling profiles. LTI launch traffic is bursty — synchronized class starts produce launch spikes, so the tool endpoint must handle concurrency without queueing behind video work. Video processing (transcoding, storage, streaming) is the genuinely expensive dimension and dominates infra cost; it scales with content volume, not with LMS user count. Isolate the launch/auth path from the transcoding pipeline so one does not starve the other.
Failure modes to instrument and alert on:
Ramp-up. Non-trivial. Engineers need working knowledge of: Symfony bundle/DI conventions, the LTI specification (1.1 vs 1.3, launch flow, Deep Linking), PuMuKIT's domain model (series, multimedia objects, tracks, tags), and the target LMS's external-tool configuration. Realistically 2–4 weeks to first competent change, longer if the team has no Symfony experience. If the team is Laravel-native, that Symfony ramp-up cost is a recurring tax on every future change and should be weighed explicitly against a native integration built in a stack the team already knows.
PM verdict. The integration is technically possible but organizationally expensive, and the package's near-zero adoption means you are effectively the maintainer. Recommend proceeding only if PuMuKIT is already an established organizational platform with support in place; otherwise, scope the underlying requirement (LTI-based video embedding) and satisfy it with a direct LMS integration in the team's own stack, treating this bundle as an architectural anti-pattern for a Laravel codebase.
How can I help you explore Laravel packages today?