finds.dev← search

// the find

Cvmcosta/ltijs

★ 373 · TypeScript · Apache-2.0 · updated Sep 2026

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.

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 →