İlişkili Testlify

Testlify LTI 1.3 Advantage Eklentisi

Testlify'ı Next.js 14'te otomatik not aktarımıyla Canvas, Moodle, Blackboard ve D2L Brightspace'e bağlayan, 1EdTech sertifikalı bir LTI 1.3 entegrasyonu tasarlandı ve geliştirildi.

Canvas, Moodle, Blackboard ve D2L Brightspace gibi Öğrenme Yönetim Sistemleri (LMS), üniversiteler ve kurumsal eğitim ekipleri tarafından kullanılan başlıca platformlardır. Testlify değerlendirmelerini bu sistemler içinde erişilebilir kılmak için Testlify LTI entegrasyonunu baştan lider mühendis olarak tasarladım ve geliştirdim. Bu entegrasyon, eğitimcilerin Testlify değerlendirmelerini doğrudan LMS derslerine gömmesine ve puanları otomatik olarak not defterine senkronize etmesine olanak tanır.

Testlify LTI 1.3 Eklenti Demosu

Bu entegrasyon, Names and Role Provisioning Services (NRPS 2.0) ve Assignment & Grade Services (AGS 2.0) dahil olmak üzere LTI Advantage (v1.3) için 1EdTech tarafından resmi olarak sertifikalandırılmıştır.

Ne inşa ettim

  • Özel LTI 1.3 güvenlik katmanı: Next.js 14'te, OpenID Connect (OIDC) üçüncü taraf başlatma akışları, RSA SHA-256 JWT imza doğrulaması ve dinamik JWKS uç noktaları dahil olmak üzere tam LTI 1.3 güvenlik spesifikasyonunu uyguladım.
  • LTI Advantage hizmetleri: Platform kaydı sırasında Deep Linking'i desteklenen bir mesaj türü olarak kaydettim, ders listelerini almak için (LMS platformları arasında sayfalama ve rol-URN normalleştirmesiyle) tam bir NRPS 2.0 entegrasyonu ve otomatik not senkronizasyonu için AGS 2.0 uç noktaları geliştirdim.
  • Çok kiracılı full-stack mimari: React 18'de çok kiracılı bir yönetim dashboard'u geliştirdim, platform kayıt anahtarları için MongoDB şemalarını yapılandırdım ve yerel test için ayrı çalışan bir Moodle Docker ortamının ağına katıldım. Instructure tarafından barındırılan Canvas ise doğrudan canlı bir örneğe karşı test edildi.

Neden önemliydi

Resmi 1EdTech sertifikasyonunu almak, Testlify'ın yüksek öğrenim ve kurumsal eğitim pazarlarına girmesini sağladı. Otomatik ders listesi senkronizasyonu ve not aktarımı, eğitimciler için manuel veri girişini ortadan kaldırdı.

Ekip ve Zaman Çizelgesi

Yaklaşık 7 hafta boyunca (Şubat-Mart 2026), yanımda iki iş arkadaşımla birlikte 25 commit. Commit'lerin yaklaşık %80'ini ben yazdım ve mimariyi ile sertifikasyon çalışmasını ben yönlendirdim; "lider mühendis" rolün abartılı değil, doğru bir tanımıdır.

Elle Yazıldı, ltijs Değil

ltijs, LTI 1.3 için standart Node.js kütüphanesidir ve çoğu entegrasyon ona başvurur. Bu entegrasyon ona bağımlı değildir. JWKS getirme, anahtar eşleştirme ve RS256 JWT doğrulaması doğrudan bu kod tabanında uygulanmıştır, ilgili blog yazısında anlatılan durumsuz oturum deseniyle birlikte: bir çerez yerine URL'de taşınan, imzalı, 24 saatlik bir oturum token'ı (ltik), her API çağrısında bearer token olarak gönderilir, özellikle bir tarayıcı LMS iframe'i içinde üçüncü taraf çerezleri engellediğinde entegrasyonun çalışmaya devam etmesi için. Sertifikalı bir entegrasyonu 1EdTech'in uygunluk testinden geçirmek, güvenlik katmanının spesifikasyonla tam olarak eşleşmesi gerektiği anlamına gelir; bu kodu doğrudan sahiplenmek, bir üçüncü taraf kütüphanesinin sürüm döngüsüne ve spesifikasyon yorumuna bağımlı olmak yerine, bunu doğrulamayı ve sertifikalandırmayı kolaylaştırdı.

Tam olarak inşa edilmiş iki LTI Advantage hizmeti olan NRPS ve AGS, spesifikasyonun minimumunun ötesine geçer: NRPS, LMS'nin kendi Link başlıkları üzerinden sayfalamayı yönetir ve rol URN'lerini bunları aynı şekilde biçimlendirmeyen platformlar arasında normalleştirir, spesifikasyona tam uymayan LMS platformları için bir güvenlik ağı olarak istemci tarafı bir filtre ile birlikte.

Dört LMS Platformu, Tek Yerel Test Ortamı

Moodle bu deponun kendi Docker Compose dosyasından başlatılmaz; yerel test için ayrı çalışan bir moodle-docker projesinin ağına katılır. Canvas, Instructure'ın kendi barındırılan SaaS'ıdır ve yerel olarak çalıştırılacak eşdeğer bir kendi kendine barındırılan görüntüsü yoktur, bu yüzden doğrudan canlı bir Canvas örneğine karşı test edilir. Üretim Vercel üzerinde çalışır. Bir üretim Dockerfile'ı erken dönemde vardı ve Vercel tek gerçek dağıtım hedefi olduğunda daha sonra silindi; yalnızca yerel yineleme için bir geliştirme-only Dockerfile kaldı, kendi kendine barındırma yedeği olarak değil. D2L Brightspace desteği daha sonra, dördüncü bir LMS için kayıt desteği ekleyen tarihli bir commit ile eklendi, orijinal üçün bir parçası değil.

Veri Modeli ve Ölçek

  • Kayıtlı her LMS platformu (bir üniversite veya kurumun Canvas/Moodle/Blackboard/Brightspace örneği), paylaşılan bir global kimlik bilgisi değil, kendi kayıt anahtarlarıyla kendi kiracı kaydıdır.
  • Ayrı hizmet modülleri, LTI Advantage spesifikasyonuna karşı NRPS (liste alma) ve AGS'yi (satır kalemleri ve puan gönderimi) ele alır, artı özel bir puan webhook uç noktası.
  • MongoDB, Mongoose aracılığıyla, platform yapılandırmasını ve değerlendirme-atama kayıtlarını destekler.

Bu proje kendi README'sinden büyüdü: daha ayrıntılı ve daha yakın tarihli bir dahili genel bakış, bu entegrasyonun aslında haline geldiği, kendi güvenlik, veritabanı ve API referans belgeleriyle birlikte tam, Vercel'de dağıtılmış, 4 LMS'li mimariyi tanımlıyor.

Build vs. Buy

ltijs kütüphanesi yerine elle yazılmış JWKS/JWT/oturum mantığı: sertifikasyona tabi bir entegrasyon için, bir bağımlılığın kendi spesifikasyon yorumunu miras almak yerine spesifikasyon uyumu üzerinde tam kontrol. Kendi kendine barındırma yerine Vercel: bu tek gerçek dağıtım hedefi olduğunda, üretim Dockerfile'ı kullanılmadan tutulmak yerine silindi, yalnızca yerel yineleme için bir geliştirme-only Dockerfile bırakıldı.

Stack

Next.js 14, React 18, Mongoose ile MongoDB, yerel Moodle testi için Docker Compose, Vercel üzerinde dağıtıldı, 1EdTech LTI Advantage (1.3) uygunluk paketine karşı sertifikalandırıldı.