// the find
Cvmcosta/ltijs
Turn your application into a fully integratable LTI 1.3 tool provider.
ltijs is an Apache-2.0 TypeScript library that turns a Node web app into an LTI 1.3 tool provider, covering launches, Deep Linking, Assignment and Grade Services, Names and Role Provisioning, and Dynamic Registration. It is for teams building tools that plug into an LMS such as Canvas or Moodle who want the OIDC and JWT validation handled rather than written by hand.
The source tree maps onto the spec: separate services for launch, oidc, keyset, deep-linking, grading, names-and-roles and dynamic-registration, each with its own schemas, serializer and tests. Someone checking an edge case against the IMS spec can find the code that handles it. Storage and cache sit behind interfaces with more than one implementation (MongoDB, a legacy Mongo adapter, Redis, and a mock cache), so the backend is a config choice. The tree also includes dbtest files that run the Mongo managers against a real database, which matters for a library whose job is persisting keys and launch state across the OIDC handshake.
The only database implementations in the tree are MongoDB ones, current and legacy. Anyone on Postgres or DynamoDB has to write and maintain a backend against the interface, and the Firestore backend the README mentions lives outside this repo. The README is a quick start plus links to cvmcosta.me. v7 is a full rewrite, and the mongo-legacy directory and the v5 migration guide mean two API generations are maintained side by side, so check which one a given guide describes. The README names one maintainer contact, and the funding thanks go to institutions rather than to visible contributors. For a library that has to track LTI spec changes and handle signed tokens, check the commit history for how many people can merge before you depend on it.