Moodle'ın Yerleşik Open Badges'ini Badges Ninja ile Değiştirmek (Daha İyi Tasarımcı, Aynı API)
Moodle yerleşik Open Badges sunar ama tasarımcı sınırlıdır ve alıcı deneyimi Moodle'ın içine kilitlenmiştir. Bunun yerine Moodle tamamlamalarından Badges Ninja kimlik bilgileri (credentials) verin.
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure.
Moodle, 2.5 sürümünden beri yerleşik olarak Open Badges veriyor ve birçok kurs yöneticisi için bu, başka bir yere bakmamak için yeterli bir sebep. Yerleşik geliyor, ücretsiz ve teknik olarak standartlara uygun bir kimlik bilgisi (credential) üretiyor. Peki neden bu kadar çok Moodle yöneticisi ellinci rozetini verene kadar hayal kırıklığına uğruyor?
Dürüst cevap şu: Moodle’ın rozet sistemi bir credential ürünü olmak için değil, bir uyumluluk kutusunu işaretlemek için tasarlandı. Çalışıyor ama bir LMS’e sonradan eklenmiş bir özelliğin çalıştığı gibi çalışıyor — işlevsel, eski moda ve içinde yaşadığı platformun kısıtlarıyla sınırlı. Bir Moodle rozetini yuvarlak bir clip-art ikonundan başka bir şeye benzetmeye çalıştıysanız ya da bir mezunun “dur, bunu tam olarak nerede görüyordum?” dediğini duyduysanız, farkı zaten biliyorsunuz.
Bu, Moodle’a bir eleştiri değil — mükemmel bir LMS ve rozet kriterleri motoru (kurs tamamlama, aktivite tamamlama, manuel verme, kohort üyeliği) bir credential’ı tetiklemek için gerçekten iyi düşünülmüş. Sorun, tetikleyicinin ardından gelen her şeyde: tasarım araçları, alıcı deneyimi ve rozetin Moodle örneğinizin dışındaki görünürlüğü. badges.ninja tam olarak bunun için tasarlandı ve bunu kullanmak için Moodle’ın tamamlama mantığından vazgeçmenize gerek yok — sadece tetikleyiciyi farklı bir verme motoruna yönlendiriyorsunuz.
Moodle’ın yerleşik rozetlerinin yetersiz kaldığı yerler
Tasarımcı bir tasarım aracı değil, koordinat tabanlı bir görsel derleyicidir. Moodle’ın rozet düzenleyicisi size bir taban görsel seçme, birkaç önceden ayarlanmış ikon katmanı ekleme ve piksel ofsetleriyle konumu ayarlama imkânı verir. Şekil kütüphanesi yok, palet sistemi yok, ikon setine gömülü olanların ötesinde yazı tipi seçeneği yok. Kuruluşunuzun bir markası varsa — bir logo, bir renk paleti, sertifikalarınız için belirli bir görsel dil — Moodle’ın düzenleyicisi bunu ifade edemez. Çoğu kurum sonunda rozet tasarımını Photoshop veya Canva’da yapıp düz bir PNG yüklüyor; bu da uygulama içi bir tasarımcıya sahip olmanın amacını tamamen ortadan kaldırıyor.
Alıcıların kendi rozetlerini görmek için Moodle girişine ihtiyacı var. Bir öğrencinin verilen rozetleri Moodle profil sayfasının içinde yaşar. Kurstan ayrıldıysa, kurumsal kimlik bilgilerini unuttuysa veya kurum o zamandan beri hesabını kaldırdıysa, altta yatan doğrulama Moodle’ın backpack bağlayıcısında veya genel rozet sayfasında hâlâ çözümlense bile, rozet onun tarafında fiilen kaybolmuştur. Bir alıcının sadece e-postasıyla giriş yapıp her kursta kazandığı her credential’ı görebileceği ayrılmış, markalı, her zaman ulaşılabilir bir yer yoktur.
Paylaşım sonradan akla gelmiştir. Moodle, rozetleri Mozilla Backpack uyumlu bir hizmete gönderebilir ve her rozet için genel bir doğrulama URL’si sunar, ama yerleşik bir “LinkedIn’e Ekle” akışı, tek tıkla paylaşım düğmesi veya rozetin verilmesinden sonra birinin ona bakıp bakmadığına dair etkileşim analitiği yoktur. Rozetin ağızdan ağıza pazarlama gibi çalışmasını isteyen programlar için — bootcamp’ler, sürekli eğitim (CE) sağlayıcıları, kurumsal eğitim — bu gerçek bir fırsat maliyetidir.
Toplu işlemler beceriksizdir. Bir rozeti tüm bir kohorta vermek, herkes tetikleyici aktiviteyi Moodle içinde aynı anda tamamladığında işe yarar. Ama geçmiş bir kohort için rozetleri geriye dönük tamamlamanız, bir e-tablodan geçmiş tamamlamaları içe aktarmanız ya da LMS’in tamamen dışında gerçekleşen bir şey için rozet vermeniz gerekiyorsa, Moodle’ın veritabanına karşı SQL yazmak ya da özellikle rozetler için tasarlanmamış CSV içe aktarma araçlarıyla boğuşmak zorunda kalırsınız.
Değişim modeli: Moodle’ın tetikleyicilerini koruyun, veren tarafı değiştirin
Bunu düzeltmek için Moodle’dan tamamen ayrılmanıza gerek yok. En temiz model, Moodle’ın iyi yaptığı şeyi yapmaya devam etmesine izin vermektir — kurs tamamlamayı, aktivite tamamlamayı, kohort üyeliğini takip etmek — ve bir tamamlama koşulu tetiklendiği anda, yerleşik rozetini vermek yerine (veya onunla birlikte) Badges Ninja API’sini çağırmasını sağlamak.
Moodle bunu birkaç yolla destekler:
-
Kurs tamamlama webhook’u / Moodle Web Services (REST) yoklaması. Moodle’ın core_completion API’si, her kullanıcı için her kurstaki tamamlama durumunu sunar. Hafif bir zamanlanmış görev (bir Moodle zamanlanmış cron görevi veya Moodle’ın REST API’sine istek atan harici bir cron işi), yeni tamamlanan kayıtları yoklayıp her biri için Badges Ninja verme (awards) uç noktasını çağırabilir.
-
Yerel bir eklenti kancası (hook). Kadronuzda bir geliştirici varsa, Moodle’ın olay sistemi (
\core\event\course_completed) küçük bir yerel eklenti tarafından izlenebilir; bu eklenti tamamlama gerçekleştiği anda bir HTTP isteği gönderir — yoklama gecikmesi olmadan. -
Moodle’ın koduna dokunmak istemiyorsanız yapıştırıcı olarak Zapier/Make/n8n — Moodle, tamamlama olaylarını bir webhook alıcısına gönderebilir ve kod yazmayan bir otomasyon aracı bunu bir verme çağrısına dönüştürür.
Tamamlanmış bir kullanıcının adını ve e-postasını elde ettiğinizde, gerçek verme çağrısı şöyle görünür:
curl -X POST https://api.badges.ninja/awards \
-H "X-Api-Key: bws_3f9a1c2d4e5b6a7c8d9e0f1a2b3c4d5e" \
-H "Content-Type: application/json" \
-d '{
"badgeId": "badge_moodle_course_completion",
"recipient": { "name": "Jordan Alvarez", "email": "learner@example.edu" },
"issuedOn": "2026-08-31"
}'
Ya da çalıştırdığınız hangi zamanlanmış görev veya webhook alıcısının içindeyse, Node ile:
const response = await fetch("https://api.badges.ninja/awards", {
method: "POST",
headers: {
"X-Api-Key": process.env.BADGES_NINJA_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
badgeId: "badge_moodle_course_completion",
recipient: { name: completedUser.fullname, email: completedUser.email },
issuedOn: Date.now(),
}),
});
const award = await response.json();
Alıcının e-postası saklanırken SHA-256 ile hash’lenir, verme işlemi otomatik olarak benzersiz bir doğrulama URL’si, bir QR kodu ve A4 boyutunda bir PDF sertifika alır ve — kritik olarak — alıcı, ayrı bir Moodle hesabına gerek kalmadan badges.ninja/me adresinde bir magic-link girişiyle bunu talep edebilir. İstek/yanıt yapısının tamamı için awards API referansına ve API anahtarlarının uçtan uca nasıl çalıştığı için kimlik doğrulama rehberine bakın.
Bunu toplu olarak yapmayı tercih ederseniz — örneğin gerçek zamanlı olayları bağlamak yerine bir dönemlik tamamlamaları tek seferde geriye dönük işlemek isterseniz — tamamlamaları Moodle’dan CSV olarak dışa aktarın ve büyük dosyalar için duraklat/devam ettir özelliğini destekleyen toplu verme akışını doğrudan kullanın. Bu konu CSV’den Open Badges nasıl verilir yazısında ayrıntılı olarak ele alınıyor.
Rozetin kendisini tasarlamak
Altyapı hazır olduğunda, rozetin gerçek tasarımı web ekibinize açılan bir talep değil, dakikalar sürer. Görsel tasarımcı size 80’den fazla şekil şablonu, gerçek bir renk paleti sistemi, ikon kütüphaneleri ve özel yazı tipi yükleme imkânı sunar — böylece “İleri Düzey İstatistik — Tamamlandı” rozeti genel bir Moodle başarı ikonu yerine gerçekten kurumunuzun markasına ait gibi görünebilir.

Her API anahtarı, rozetleri ve verenleri (issuer) yönettiğiniz aynı panodan kapsamlandırılabilir ve iptal edilebilir; böylece entegrasyon kimlik bilgisini bir geliştiriciye (veya Zapier gibi bir otomasyon aracına) vermek, ana hesap girişinizi paylaşmak anlamına gelmez.

Yan yana karşılaştırma: alıcı deneyimi
| Moodle’ın yerleşik rozeti | Badges Ninja | |
|---|---|---|
| Alıcıların görüntülediği yer | Moodle profili içinde, giriş gerektirir | badges.ninja/me, magic-link, şifresiz |
| Genel doğrulama | Evet, rozet başına genel URL | Evet, Open Badge v2.0 JSON-LD uç noktası |
| Tasarım araçları | Sabit ikon + konum ofsetleri | 80+ şablon, paletler, özel yazı tipleri/ikonlar |
| LinkedIn paylaşımı | Manuel, yerleşik düğme yok | Yerleşik Add-to-LinkedIn-Profile akışı |
| Toplu geçmiş verme | SQL veya manuel CSV çözümü | Duraklat/devam ettir özellikli yerleşik toplu verme |
| Etkileşim görünürlüğü | Yok | Verme başına görüntüleme/paylaşım istatistikleri |
| Kurumdan ayrıldıktan sonra erişim | Moodle hesap durumuna bağlı | Kalıcı, alıcıya ait |
Moodle yine de bir konuda kazanıyor: tek gereksiniminiz “rozet var, teknik olarak Open Badge v2.0’a uygun ve öğrencinin zaten kullandığı LMS’in içinde yaşıyor” ise, yerleşik rozetler ekstra hiçbir şeye mal olmaz ve entegrasyon çalışması gerektirmez. Denge, tasarım kalitesini, kurs bittikten sonraki taşınabilirliği veya verme işlemini bir işe alım/pazarlama sinyaline dönüştürmeyi önemsediğiniz anda değişir — ki bu er ya da geç çoğu kurum için geçerlidir.
Diğer Open Badges platformlarının fiyat ve özellik açısından nasıl karşılaştırıldığına dair daha geniş bir bakış için en ucuz Open Badges platformu karşılaştırmasına bakın. Kurumunuz Open Badge v2.0 ile daha yeni doğrulanabilir kimlik bilgisi (verifiable credentials) spesifikasyonu arasında karar veriyorsa, Open Badge v2’ye karşı v3 açıklaması bugün gerçekten hangisini kullanmanız gerektiğini anlatıyor.
İlk doğrulanabilir credential’ınızı vermeye hazır mısınız? badges.ninja’da ücretsiz başlayın — görsel tasarımcı, genel doğrulama sayfası, PDF sertifika, Open Badge v2.0 çıktısı. Kredi kartı gerekmez.
Bu yazı nasıl hazırlandı
Bu blogdaki bazı yazılar bir yapay zeka asistanının yardımıyla hazırlanır, ardından yayınlanmadan önce Badges Ninja ekibi tarafından incelenir, doğrulanır ve düzenlenir. Her kod örneği ve fiyat, canlı ürünle karşılaştırılarak doğrulanır. Editoryal ve yapay zeka sürecimiz hakkında daha fazla bilgiyi editoryal süreç sayfamızda bulabilirsiniz .

Yazar hakkında
Nacho Coll
Founder & Engineer at Badges Ninja
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure. Writes about the Open Badges spec, credential verification, and running a credentialing platform serverless on AWS, from the operator side of the wire.

