इसके साथ संबद्ध Testlify

Testlify LTI 1.3 Advantage प्लगइन

एक 1EdTech-सर्टिफाइड LTI 1.3 इंटीग्रेशन डिज़ाइन और बनाया जो Testlify को Canvas, Moodle, Blackboard, और D2L Brightspace से Next.js 14 में ऑटोमेटेड ग्रेड पासबैक के साथ जोड़ता है।

Canvas, Moodle, Blackboard, और D2L Brightspace जैसे Learning Management System (LMS) यूनिवर्सिटी और एंटरप्राइज़ ट्रेनिंग टीमों द्वारा इस्तेमाल किए जाने वाले प्राथमिक प्लेटफॉर्म हैं। Testlify असेसमेंट्स को इन सिस्टम्स के अंदर एक्सेसिबल बनाने के लिए, मैंने Testlify LTI इंटीग्रेशन को लीड इंजीनियर के तौर पर शुरू से डिज़ाइन और बनाया। यह इंटीग्रेशन शिक्षकों को Testlify असेसमेंट्स को सीधे LMS कोर्सेज़ में एम्बेड करने और स्कोर को ग्रेडबुक में ऑटोमेटिकली सिंक करने देता है।

Testlify LTI 1.3 Plugin Demo

यह इंटीग्रेशन LTI Advantage (v1.3) के लिए 1EdTech द्वारा आधिकारिक तौर पर सर्टिफाइड है, जो Names and Role Provisioning Services (NRPS 2.0) और Assignment & Grade Services (AGS 2.0) को कवर करता है।

मैंने क्या बनाया

  • कस्टम LTI 1.3 सिक्योरिटी लेयर: Next.js 14 में पूरा LTI 1.3 सिक्योरिटी स्पेसिफिकेशन इम्प्लीमेंट किया, जिसमें OpenID Connect (OIDC) थर्ड-पार्टी लॉन्च फ्लो, RSA SHA-256 JWT सिग्नेचर वेरिफिकेशन, और डायनामिक JWKS एंडपॉइंट शामिल हैं।
  • LTI Advantage सर्विसेज़: प्लेटफ़ॉर्म रजिस्ट्रेशन के दौरान Deep Linking को एक सपोर्टेड मैसेज टाइप के तौर पर रजिस्टर किया, कोर्स रोस्टर लाने के लिए पूरा NRPS 2.0 इंटीग्रेशन बनाया (LMS प्लेटफॉर्म्स में पेजिनेशन और रोल-URN नॉर्मलाइज़ेशन के साथ), और ऑटोमेटेड ग्रेड सिंक्रोनाइज़ेशन के लिए AGS 2.0 एंडपॉइंट।
  • मल्टी-टेनेंट फुल-स्टैक आर्किटेक्चर: React 18 में एक मल्टी-टेनेंट एडमिनिस्ट्रेशन डैशबोर्ड बनाया, प्लेटफ़ॉर्म रजिस्ट्रेशन कीज़ के लिए MongoDB स्कीमा कॉन्फ़िगर किए, और लोकल टेस्टिंग के लिए एक अलग से चल रहे Moodle Docker एनवायरनमेंट के नेटवर्क से जुड़ा। Canvas, चूंकि Instructure-होस्टेड है, उसे सीधे एक लाइव इंस्टेंस के खिलाफ टेस्ट किया गया।

यह क्यों मायने रखता था

आधिकारिक 1EdTech सर्टिफिकेशन हासिल करने से Testlify को हायर एजुकेशन और एंटरप्राइज़ ट्रेनिंग मार्केट में एंट्री मिली। ऑटोमेटेड रोस्टर सिंक और ग्रेड पासबैक ने इंस्ट्रक्टर्स के लिए मैनुअल डेटा एंट्री खत्म कर दी।

टीम और टाइमलाइन

लगभग 7 हफ़्तों (फरवरी से मार्च 2026) में 25 कमिट्स, मेरे साथ दो सहयोगियों के साथ। मैंने लगभग 80% कमिट्स लिखे और आर्किटेक्चर व सर्टिफिकेशन का काम आगे बढ़ाया; "लीड इंजीनियर" इस भूमिका का एक सटीक विवरण है, कोई बढ़ा-चढ़ाकर बताया गया नहीं।

हाथ से बनाया गया, ltijs नहीं

ltijs LTI 1.3 के लिए स्टैंडर्ड Node.js लाइब्रेरी है, और ज़्यादातर इंटीग्रेशन उसी पर निर्भर करते हैं। यह इस पर निर्भर नहीं है। JWKS फ़ेचिंग, key matching, और RS256 JWT वेरिफिकेशन सीधे इसी कोडबेस में इम्प्लीमेंट किए गए हैं, साथ ही कंपेनियन ब्लॉग पोस्ट में बताया गया स्टेटलेस सेशन पैटर्न: एक साइन किया, 24-घंटे का सेशन टोकन (ltik) जो कुकी की बजाय URL में ले जाया जाता है, और हर API कॉल पर बियरर टोकन की तरह भेजा जाता है, ख़ास तौर पर ताकि जब कोई ब्राउज़र LMS iframe के अंदर थर्ड-पार्टी कुकीज़ ब्लॉक करे तो भी इंटीग्रेशन काम करता रहे। 1EdTech के कॉन्फॉर्मेंस टेस्टिंग से एक सर्टिफाइड इंटीग्रेशन पास कराने का मतलब है कि सिक्योरिटी लेयर को स्पेक से बिल्कुल मैच करना होगा; उस कोड को सीधे ओन करना, किसी थर्ड-पार्टी लाइब्रेरी के रिलीज़ साइकल और स्पेक की इंटरप्रिटेशन पर निर्भर रहने की बजाय, इसे वेरिफाई और सर्टिफाई करना आसान बनाता है।

NRPS और AGS, दो पूरी तरह बनाई गई LTI Advantage सर्विसेज़, स्पेक के मिनिमम से आगे जाती हैं: NRPS LMS के अपने Link हेडर के ज़रिए पेजिनेशन हैंडल करता है और उन प्लेटफॉर्म्स में रोल URN नॉर्मलाइज़ करता है जो उन्हें एक जैसा फॉर्मेट नहीं करते, साथ ही एक क्लाइंट-साइड फ़िल्टर उन LMS प्लेटफॉर्म्स के लिए सेफ्टी नेट के तौर पर जो स्पेक को पूरी तरह फॉलो नहीं करते।

चार LMS प्लेटफ़ॉर्म, एक लोकल टेस्ट हार्नेस

Moodle इस रेपो की अपनी Docker Compose फ़ाइल से स्पिन अप नहीं होता; यह लोकल टेस्टिंग के लिए अलग से चल रहे moodle-docker प्रोजेक्ट के नेटवर्क से जुड़ता है। Canvas Instructure की अपनी होस्टेड SaaS है जिसका कोई इक्विवेलेंट सेल्फ-होस्टेड इमेज लोकली चलाने के लिए नहीं है, इसलिए इसे सीधे एक लाइव Canvas इंस्टेंस के खिलाफ टेस्ट किया जाता है। प्रोडक्शन Vercel पर चलता है। एक प्रोडक्शन Dockerfile शुरुआत में मौजूद थी और बाद में डिलीट कर दी गई जब Vercel ही असली डिप्लॉयमेंट टारगेट बन गया; अब सिर्फ़ एक dev-only Dockerfile बची है, लोकल इटरेशन के लिए, किसी सेल्फ-होस्ट फॉलबैक के तौर पर नहीं। D2L Brightspace सपोर्ट बाद में जोड़ा गया, एक डेटेड कमिट से जो चौथे LMS के लिए रजिस्ट्रेशन सपोर्ट जोड़ता है, मूल तीन का हिस्सा नहीं।

डेटा मॉडल और स्केल

  • हर रजिस्टर्ड LMS प्लेटफ़ॉर्म (किसी यूनिवर्सिटी या इंस्टीट्यूशन का Canvas/Moodle/Blackboard/Brightspace इंस्टेंस) अपने खुद के रजिस्ट्रेशन कीज़ के साथ अपना टेनेंट रिकॉर्ड है, कोई शेयर्ड ग्लोबल क्रेडेंशियल नहीं।
  • अलग सर्विस मॉड्यूल NRPS (रोस्टर रिट्रीवल) और AGS (लाइन आइटम और स्कोर सबमिशन) को LTI Advantage स्पेक के खिलाफ हैंडल करते हैं, साथ ही एक डेडिकेटेड स्कोर वेबहुक एंडपॉइंट।
  • MongoDB, Mongoose के ज़रिए, प्लेटफ़ॉर्म कॉन्फ़िगरेशन और असेसमेंट-असाइनमेंट रिकॉर्ड्स को बैक करता है।

यह प्रोजेक्ट अपनी खुद की README से आगे निकल गया: एक ज़्यादा डिटेल्ड और ज़्यादा हाल में डेटेड इंटरनल ओवरव्यू पूरे, Vercel-डिप्लॉयड, 4-LMS आर्किटेक्चर का वर्णन करता है, अपने खुद के सिक्योरिटी, डेटाबेस, और API रेफरेंस डॉक्स के साथ, जो यह इंटीग्रेशन असल में बन गया।

Build vs. Buy

ltijs लाइब्रेरी की बजाय हाथ से बनाया JWKS/JWT/सेशन लॉजिक: एक सर्टिफिकेशन-गेटेड इंटीग्रेशन के लिए स्पेक कॉम्प्लायंस पर पूरा कंट्रोल, किसी डिपेंडेंसी की अपनी स्पेक इंटरप्रिटेशन को इनहेरिट करने की बजाय। सेल्फ-होस्टिंग की बजाय Vercel: जब वह ही असली डिप्लॉयमेंट टारगेट बन गया, प्रोडक्शन Dockerfile को बिना इस्तेमाल किए रखने की बजाय डिलीट कर दिया गया, सिर्फ़ लोकल इटरेशन के लिए एक dev-only Dockerfile छोड़कर।

Stack

Next.js 14, React 18, Mongoose के साथ MongoDB, लोकल Moodle टेस्टिंग के लिए Docker Compose, Vercel पर डिप्लॉयड, 1EdTech LTI Advantage (1.3) कॉन्फॉर्मेंस सूट के खिलाफ सर्टिफाइड।