@ltikit/core
v1.0.0-rc.5
Published
Runtime-agnostic LTI 1.3 (LTI Advantage) core — jose + fetch, no framework, no DB.
Readme
@ltikit/core
Runtime-agnostic LTI 1.3 (LTI Advantage) core for LTIkit —
just jose + fetch. No framework, no database, no Express,
no MongoDB. Runs on Node, edge, Cloudflare Workers, Deno, Bun.
Always required. Every LTIkit tool depends on this package. See Which packages do I need? if you're not sure what else to add.
npm i @ltikit/coreWhat's in it
OIDC login + launch verification, JWKS, Assignment & Grade Services (grade passback), Names & Role
Provisioning (roster), Deep Linking, Dynamic Registration, and the identity/session seam — signature
verification, single-use nonce replay defense, and all state behind two small adapter interfaces
(NonceStore, PlatformStore) that you plug in.
import { createLti, staticKeyStore } from '@ltikit/core'
import { supabasePlatformStore, supabaseNonceStore } from '@ltikit/adapter-supabase'
export const lti = createLti({
keys: staticKeyStore({ /* your RS256 keypair */ }),
platforms: supabasePlatformStore(client), // or any PlatformStore
nonces: supabaseNonceStore(client), // or any NonceStore
})
// in a route handler:
const result = await lti.launch({ idToken, state }) // verified claims, or throwsThen wire routes with @ltikit/next,
@ltikit/hono, or plain
Request/Response — the core doesn't care.
Docs
- How it fits together — the required-core-vs-optional-slots map
- Quickstart
- Capabilities — what's implemented
- API reference
Links
Repository · Issues · Need help? — paid setup/integration help available.
MIT
