finds.dev← search

// the find

LearningLocker/learninglocker

★ 581 · JavaScript · GPL-3.0 · updated May 2024

Learning Locker - The Open Source Learning Record Store. Started in 2014.

Learning Locker is an xAPI/Tin Can Learning Record Store (LRS) — a backend for storing and querying learning activity statements from e-learning platforms. It's aimed at L&D teams and LMS integrators who need to collect and visualise learner data. The project is now corporate-controlled by Learning Pool after being open-sourced in 2014.

1. One of the few open-source xAPI LRS implementations that actually reached production maturity — the spec is niche and most alternatives are commercial-only. 2. Solid test coverage across the API layer, including scope-filtered access control tests that show the multi-tenant model was thought through. 3. The persona merging and identifier linking system is genuinely useful — xAPI statements can come from multiple actor formats and unifying them is non-trivial work that's done here. 4. CLI migration tooling exists and covers multiple major versions, which matters a lot for a data-heavy system that's been running since 2014.

1. MongoDB-backed, and the codebase shows it — lots of raw aggregation pipeline manipulation, $oid/$dte conversion helpers, and in-memory Mongo filtering shims that signal the data model is fighting the store. Migrating away or scaling past a single Mongo node would be painful. 2. Last meaningful activity is 2024 but development effectively stalled years before that — the CLI is full of one-off migration commands that hint at accumulated debt rather than planned evolution. 3. The hosted version (Learning Pool's cloud product) is the real product; the open-source repo exists mainly as a lead-gen artifact, so don't expect issues to get triaged or PRs merged. 4. Node.js stack with Babel, Yarn 1, and Travis CI — all the telltale signs of a mid-2010s JS project that was never modernised, which means you're inheriting dependency debt on day one.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →