escolalms/scorm
Laravel package for integrating SCORM e-learning content into your application, providing backend support for uploading, playing, and tracking SCORM packages and learner progress. Part of the EscolaLMS ecosystem for building online learning platforms.
imsmanifest.xml, hosting the package assets, implementing the JavaScript SCORM API shim (1.2 and/or 2004), and persisting cmi.* data (completion, score, session time, suspend state). This package is a "borrow" option that lets you avoid spending a sprint or two of engineering on a commodity capability so the team can spend it on differentiators.Consider it when:
Look elsewhere when:
For executives: We have an opportunity to close a common procurement gap — "can the platform import SCORM training content?" — using an MIT-licensed, open-source Laravel module instead of building it or licensing a vendor. The direct cost is effectively zero, and it compresses a multi-week engineering effort into an integration task. The trade-off is strategic rather than financial: the module is small (13 stars), maintained by a narrow community, ships its most recent release in January 2025, and only works if we adopt the EscolaLMS course model as our foundation. My recommendation is a time-boxed technical spike — two engineers, roughly one to two weeks — to prove import, launch, and completion tracking against three real customer-authored packages. If the spike passes, we get a standards-based content capability at a fraction of build cost and gain a defensible line in RFPs. If it fails, we have spent two weeks to avoid a much more expensive dead end, and we will know precisely what a commercial alternative needs to cost to be worth it.
For engineering: Treat this as a reference implementation and a head start, not a dependency you can forget. Budget for reading and owning the code, pinning the version, writing our own integration tests around manifest parsing and the SCORM runtime API, and isolating package playback on a separate sandboxed origin so third-party JavaScript cannot touch session credentials. Document the exit path — the interface boundary between "content ingestion" and "our course model" should be ours, so a future swap to a commercial service or an xAPI-based approach is a contained change rather than a rewrite.
How can I help you explore Laravel packages today?