---
title: "Lms Lrs"
description: "Two applications and an nginx configuration: a Vue front end that uploads a package and plays it, and a NestJS service that stores the run-time data in Postgres through TypeORM. The author's own repository description is the fairest summary available — \"THIS SOLUTION IS NOT OPTIMIZED FOR PRODUCTION. But it can be used as reference material\" — and this listing exists because the reference value is real."
canonical_url: "https://scorm-tools.com/tools/lms-lrs"
last_updated: "2026-10-31T10:22:02.574Z"
---

Two applications and an nginx configuration: a Vue front end that uploads a package and plays it, and a NestJS service that stores the run-time data in Postgres through TypeORM. The author's own repository description is the fairest summary available — "THIS SOLUTION IS NOT OPTIMIZED FOR PRODUCTION. But it can be used as reference material" — and this listing exists because the reference value is real.

What is genuinely useful is seeing the full loop written out in one readable stack: the browser-side API object, the HTTP calls it makes, and the tables that catch them. Very few open projects show the server half of SCORM tracking this plainly.

Two things to know before assuming more than that. The 1.2 adapter is the 2004 implementation wearing 1.2 method names, so a strict 1.2 SCO writing `cmi.core.lesson_status` is not being served a 1.2 data model. And despite the repository's cmi5 and Tin Can topics, the xAPI module registers no controllers at all — the entities exist, the endpoints do not — so no xAPI or cmi5 support is recorded here.

Maintenance state is plain: two stars, one author, no commits since March 2023. Read it, borrow from it, and do not build on it.
