মুডলের নেটিভ Open Badges-এর বদলে Badges Ninja (উন্নত ডিজাইনার, একই API)
মুডল নেটিভভাবে Open Badges দেয়, কিন্তু ডিজাইনার সীমিত এবং প্রাপকের অভিজ্ঞতা মুডলের ভেতরেই আটকে থাকে। এর বদলে মুডল কমপ্লিশন থেকে 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.
মুডল সংস্করণ ২.৫ থেকেই নেটিভভাবে Open Badges ইস্যু করে আসছে, আর অনেক কোর্স অ্যাডমিনিস্ট্রেটরের কাছে এটাই অন্য কোথাও না তাকানোর যথেষ্ট কারণ। এটি বিল্ট-ইন, এটি ফ্রি, আর কারিগরিভাবে এটি একটি স্ট্যান্ডার্ড-কমপ্লায়েন্ট ক্রেডেনশিয়াল তৈরি করে। তাহলে কেন এত মুডল অ্যাডমিন তাদের পঞ্চাশতম ব্যাজ ইস্যু করার সময় হতাশ হয়ে পড়েন?
সৎ উত্তরটি হলো: মুডলের ব্যাজ সিস্টেম একটি কমপ্লায়েন্স বক্স টিক দেওয়ার জন্য ডিজাইন করা হয়েছিল, একটি ক্রেডেনশিয়ালিং প্রোডাক্ট হওয়ার জন্য নয়। এটি কাজ করে, তবে একটি LMS-এ জোড়া লাগানো ফিচারের মতোই কাজ করে — কার্যকর, পুরনো ধাঁচের, আর যে প্ল্যাটফর্মে এটি বাস করে তার সীমাবদ্ধতায় বাঁধা। আপনি যদি কখনো একটি মুডল ব্যাজকে গোলাকার ক্লিপ-আর্ট আইকনের চেয়ে অন্য কিছুর মতো দেখানোর চেষ্টা করে থাকেন, অথবা কোনো গ্র্যাজুয়েটকে জিজ্ঞাসা করতে শুনে থাকেন, ‘আচ্ছা, আমি এই জিনিসটা আসলে কোথায় দেখতে পাব?’ — তাহলে আপনি ইতিমধ্যেই এই ফাঁকটা জানেন।
এটি মুডলের সমালোচনা নয় — এটি একটি চমৎকার LMS, আর এর ব্যাজ ক্রাইটেরিয়া ইঞ্জিন (কোর্স কমপ্লিশন, অ্যাক্টিভিটি কমপ্লিশন, ম্যানুয়াল অ্যাওয়ার্ড, কোহোর্ট মেম্বারশিপ) একটি ক্রেডেনশিয়াল ট্রিগার করার জন্য সত্যিকার অর্থেই সুচিন্তিত। সমস্যাটি ট্রিগারের পরের সবকিছুতে — ডিজাইন টুলিং, প্রাপকের অভিজ্ঞতা, আর আপনার মুডল ইনস্ট্যান্সের বাইরে ব্যাজের দৃশ্যমানতায়। ঠিক এই অংশটির জন্যই badges.ninja তৈরি করা হয়েছে, আর এটি ব্যবহার করতে আপনাকে মুডলের কমপ্লিশন লজিক ছেড়ে দিতে হবে না — আপনি শুধু ট্রিগারটিকে একটি ভিন্ন ইস্যুয়িং ইঞ্জিনের দিকে পয়েন্ট করবেন।
মুডলের নেটিভ ব্যাজ যেখানে পিছিয়ে পড়ে
ডিজাইনারটি একটি কোঅর্ডিনেট-বেসড ইমেজ কম্পোজিটর, কোনো ডিজাইন টুল নয়। মুডলের ব্যাজ এডিটর আপনাকে একটি বেস ইমেজ বেছে নিতে, কিছু প্রি-সেট আইকন ওভারলে বসাতে, আর পিক্সেল অফসেট দিয়ে পজিশন অ্যাডজাস্ট করতে দেয়। এখানে কোনো শেপ লাইব্রেরি নেই, কোনো প্যালেট সিস্টেম নেই, আইকন সেটে বেক করা ফন্টের বাইরে কোনো ফন্ট চয়েসও নেই। আপনার প্রতিষ্ঠানের যদি একটি ব্র্যান্ড থাকে — একটি লোগো, একটি কালার প্যালেট, আপনার সার্টিফিকেশনের জন্য একটি নির্দিষ্ট ভিজ্যুয়াল ভাষা — মুডলের এডিটর তা প্রকাশ করতে পারে না। বেশিরভাগ প্রতিষ্ঠান শেষ পর্যন্ত Photoshop বা Canva-তে ব্যাজ আর্ট ডিজাইন করে আর একটি ফ্ল্যাট PNG আপলোড করে, যা ইন-অ্যাপ ডিজাইনার থাকার পুরো উদ্দেশ্যটাই নস্যাৎ করে দেয়।
প্রাপকদের নিজেদের ব্যাজ দেখতে একটি মুডল লগইন প্রয়োজন। একজন শিক্ষার্থীর অর্জিত ব্যাজগুলো তার মুডল প্রোফাইল পেজের ভেতরে থাকে। সে যদি কোর্স থেকে এগিয়ে গিয়ে থাকে, তার প্রাতিষ্ঠানিক ক্রেডেনশিয়াল ভুলে গিয়ে থাকে, অথবা প্রতিষ্ঠান ততদিনে তার অ্যাকাউন্ট ডিপ্রোভিশন করে ফেলেছে, তাহলে ব্যাজটি কার্যত তার দিক থেকে হারিয়ে গেছে — যদিও অন্তর্নিহিত অ্যাসারশনটি হয়তো তখনও মুডলের ব্যাকপ্যাক-কানেক্টর বা পাবলিক ব্যাজ পেজে রিজলভ হতে পারে। এমন কোনো ডেডিকেটেড, ব্র্যান্ডেড, সবসময় অ্যাক্সেসযোগ্য জায়গা নেই যেখানে একজন প্রাপক শুধু তার ইমেইল দিয়ে লগইন করে প্রতিটি কোর্সে অর্জিত প্রতিটি ক্রেডেনশিয়াল দেখতে পারেন।
শেয়ারিং একটি পরে-ভাবা বিষয়। মুডল একটি Mozilla Backpack-সামঞ্জস্যপূর্ণ সার্ভিসে ব্যাজ পুশ করতে পারে, আর এটি প্রতিটি ব্যাজের জন্য একটি পাবলিক ভেরিফিকেশন URL প্রকাশ করে, কিন্তু এখানে কোনো বিল্ট-ইন ‘Add to LinkedIn’ ফ্লো নেই, কোনো ওয়ান-ক্লিক শেয়ার বাটন নেই, আর ব্যাজ ইস্যু হওয়ার পর কেউ সেটা দেখেছে কিনা তার কোনো এনগেজমেন্ট অ্যানালিটিক্সও নেই। যেসব প্রোগ্রাম চায় ব্যাজটি ওয়ার্ড-অফ-মাউথ মার্কেটিং হিসেবে কাজ করুক — বুটক্যাম্প, CE প্রোভাইডার, কর্পোরেট ট্রেনিং — তাদের জন্য এটি একটি বাস্তব সুযোগ-ব্যয়।
বাল্ক অপারেশন অগোছালো। পুরো একটি কোহোর্টকে ব্যাজ দেওয়া কাজ করে যদি সবাই একই সময়ে মুডলের ভেতরে ট্রিগারিং অ্যাক্টিভিটি সম্পন্ন করে। কিন্তু আপনার যদি একটি অতীত কোহোর্টের জন্য ব্যাজ ব্যাকফিল করতে হয়, একটি স্প্রেডশিট থেকে ঐতিহাসিক কমপ্লিশন ইমপোর্ট করতে হয়, অথবা LMS-এর বাইরে ঘটে যাওয়া কোনো কিছুর জন্য ব্যাজ ইস্যু করতে হয়, তাহলে আপনাকে মুডলের ডেটাবেসের বিরুদ্ধে SQL লিখতে হবে অথবা এমন CSV ইমপোর্ট টুলের সঙ্গে লড়াই করতে হবে যেগুলো নির্দিষ্টভাবে ব্যাজের জন্য তৈরিই হয়নি।
রিপ্লেসমেন্ট প্যাটার্ন: মুডলের ট্রিগার রাখুন, ইস্যুয়ার বদলান
এটি ঠিক করতে মুডল ছেড়ে দেওয়ার দরকার নেই। সবচেয়ে পরিষ্কার প্যাটার্ন হলো মুডলকে সেই কাজটি চালিয়ে যেতে দেওয়া যেটায় সে ভালো — কোর্স কমপ্লিশন, অ্যাক্টিভিটি কমপ্লিশন, কোহোর্ট মেম্বারশিপ ট্র্যাক করা — আর একটি কমপ্লিশন কন্ডিশন ফায়ার হওয়ার মুহূর্তেই এটিকে Badges Ninja API কল করানো, নিজের নেটিভ ব্যাজ দেওয়ার বদলে (অথবা তার পাশাপাশি)।
মুডল এটি কয়েকভাবে সাপোর্ট করে:
-
কোর্স কমপ্লিশন ওয়েবহুক / মুডল ওয়েব সার্ভিসেস (REST) পোলিং। মুডলের core_completion API প্রতিটি ইউজারের প্রতিটি কোর্সের কমপ্লিশন স্টেট এক্সপোজ করে। একটি হালকা শিডিউলড টাস্ক (একটি মুডল শিডিউলড ক্রন টাস্ক, অথবা মুডলের REST API-তে হিট করা একটি এক্সটার্নাল ক্রন জব) নতুন সম্পন্ন হওয়া এনরোলমেন্টগুলো পোল করতে পারে, আর প্রতিটির জন্য Badges Ninja awards এন্ডপয়েন্ট কল করতে পারে।
-
একটি লোকাল প্লাগইন হুক। আপনার স্টাফে যদি একজন ডেভেলপার থাকে, মুডলের ইভেন্ট সিস্টেম (
\core\event\course_completed) একটি ছোট লোকাল প্লাগইন দিয়ে পর্যবেক্ষণ করা যায়, যা কমপ্লিশন হওয়ার মুহূর্তেই একটি HTTP রিকোয়েস্ট ফায়ার করে — কোনো পোলিং ডিলে ছাড়াই। -
Zapier/Make/n8n আঠা হিসেবে, যদি আপনি মুডলের কোডবেস স্পর্শ করা এড়াতে চান — মুডল কমপ্লিশন ইভেন্টগুলো একটি ওয়েবহুক রিসিভারে পুশ করতে পারে যেটাকে একটি নো-কোড অটোমেশন টুল অ্যাওয়ার্ড কলে রূপান্তরিত করে।
এখানে আসল অ্যাওয়ার্ড কলটি দেওয়া হলো, যখন আপনার কাছে একজন কমপ্লিট করা ইউজারের নাম আর ইমেইল থাকবে:
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"
}'
অথবা Node-এ, আপনি যে শিডিউলড টাস্ক বা ওয়েবহুক রিসিভারই চালান না কেন তার ভেতরে:
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();
প্রাপকের ইমেইল রেস্টে SHA-256 হ্যাশ করা হয়, অ্যাওয়ার্ডটি স্বয়ংক্রিয়ভাবে একটি ইউনিক ভেরিফিকেশন URL, একটি QR কোড, আর একটি A4 PDF সার্টিফিকেট পায়, আর — সবচেয়ে গুরুত্বপূর্ণ বিষয় — প্রাপক badges.ninja/me-তে একটি ম্যাজিক-লিংক সাইন-ইনের মাধ্যমে এটি ক্লেইম করতে পারেন, আলাদা কোনো মুডল অ্যাকাউন্টের প্রয়োজন ছাড়াই। সম্পূর্ণ রিকোয়েস্ট/রেসপন্স শেপ দেখুন awards API reference-এ, আর API কী কীভাবে এন্ড টু এন্ড কাজ করে তা জানতে authentication guide দেখুন।
আপনি যদি এটি বরং ব্যাচে করতে চান — যেমন, রিয়েল-টাইম ইভেন্ট ওয়্যার করার বদলে একবারে একটি সেমিস্টারের কমপ্লিশন ব্যাকফিল করা — মুডল থেকে কমপ্লিশনগুলো একটি CSV হিসেবে এক্সপোর্ট করুন আর সরাসরি বাল্ক অ্যাওয়ার্ড ফ্লো ব্যবহার করুন, যা বড় ফাইলের জন্য পজ/রিজিউম সাপোর্ট করে। এটি বিস্তারিতভাবে কভার করা হয়েছে how to issue Open Badges from a CSV-তে।
ব্যাজটি নিজে ডিজাইন করা
প্লাম্বিং একবার জায়গামতো বসে গেলে, আসল ব্যাজ ডিজাইন লাগে মিনিট কয়েক, আপনার ওয়েব টিমের কাছে একটি টিকেট নয়। ভিজ্যুয়াল ডিজাইনার আপনাকে ৮০+ শেপ টেমপ্লেট, একটি সত্যিকার কালার প্যালেট সিস্টেম, আইকন লাইব্রেরি, আর কাস্টম ফন্ট আপলোড দেয় — তাই ‘Advanced Statistics — Completed’-এর জন্য একটি ব্যাজ সত্যিই আপনার প্রতিষ্ঠানের ব্র্যান্ডের অংশ বলে মনে হতে পারে, একটি জেনেরিক মুডল অ্যাচিভমেন্ট আইকনের বদলে।

প্রতিটি API কী স্কোপড আর একই ড্যাশবোর্ড থেকে রিভোকেবল যেখানে আপনি ব্যাজ আর ইস্যুয়ার ম্যানেজ করেন, তাই একজন ডেভেলপারকে (অথবা Zapier-এর মতো একটি অটোমেশন টুলকে) ইন্টিগ্রেশন ক্রেডেনশিয়াল দেওয়ার মানে এই নয় যে আপনাকে আপনার মূল অ্যাকাউন্ট লগইন শেয়ার করতে হবে।

পাশাপাশি: প্রাপকের অভিজ্ঞতা
| মুডল নেটিভ ব্যাজ | Badges Ninja | |
|---|---|---|
| প্রাপকরা কোথায় দেখেন | মুডল প্রোফাইলের ভেতরে, লগইন প্রয়োজন | badges.ninja/me, ম্যাজিক-লিংক, পাসওয়ার্ড ছাড়াই |
| পাবলিক ভেরিফিকেশন | হ্যাঁ, প্রতি-ব্যাজ পাবলিক URL | হ্যাঁ, Open Badge v2.0 JSON-LD এন্ডপয়েন্ট |
| ডিজাইন টুলিং | ফিক্সড আইকন + পজিশন অফসেট | ৮০+ টেমপ্লেট, প্যালেট, কাস্টম ফন্ট/আইকন |
| লিংকডইন শেয়ারিং | ম্যানুয়াল, কোনো বিল্ট-ইন বাটন নেই | নেটিভ Add-to-LinkedIn-Profile ফ্লো |
| বাল্ক হিস্টোরিক্যাল ইস্যুয়েন্স | SQL অথবা ম্যানুয়াল CSV ওয়ার্কঅ্যারাউন্ড | পজ/রিজিউমসহ বিল্ট-ইন বাল্ক অ্যাওয়ার্ড |
| এনগেজমেন্ট ভিজিবিলিটি | কোনোটাই নেই | প্রতি অ্যাওয়ার্ডে ভিউ/শেয়ার স্ট্যাটস |
| প্রতিষ্ঠান ছাড়ার পরও অ্যাক্সেস | মুডল অ্যাকাউন্ট স্ট্যাটাসের সঙ্গে বাঁধা | স্থায়ী, প্রাপকের নিজস্ব মালিকানাধীন |
একটি বিষয়ে মুডল তখনও এগিয়ে: আপনার একমাত্র প্রয়োজন যদি হয় ‘ব্যাজ আছে, এটি কারিগরিভাবে Open Badge v2.0 কমপ্লায়েন্ট, আর শিক্ষার্থী ইতিমধ্যেই যে LMS ব্যবহার করছেন তার ভেতরেই থাকে,’ তাহলে নেটিভ ব্যাজে অতিরিক্ত কোনো খরচ নেই আর কোনো ইন্টিগ্রেশন কাজেরও দরকার নেই। ট্রেডঅফটা দেখা দেয় ঠিক তখনই যখন আপনি ডিজাইনের মান, কোর্স শেষ হওয়ার পরের পোর্টেবিলিটি, অথবা ইস্যুয়েন্সকে একটি রিক্রুটিং/মার্কেটিং সিগন্যালে রূপান্তরিত করার ব্যাপারে চিন্তিত হন — যা শেষ পর্যন্ত বেশিরভাগ প্রতিষ্ঠানের ক্ষেত্রেই ঘটে।
অন্যান্য Open Badges প্ল্যাটফর্ম দাম আর ফিচারের দিক থেকে কীভাবে তুলনীয়, তার একটি বিস্তৃত দৃষ্টিভঙ্গির জন্য দেখুন cheapest Open Badges platform comparison। আর আপনার প্রতিষ্ঠান যদি Open Badge v2.0-কে নতুন ভেরিফায়েবল-ক্রেডেনশিয়ালস স্পেকের বিপরীতে ওজন করে দেখছে, Open Badge v2 vs v3 explained কভার করে আজ আসলে কোনটা শিপ করা উচিত।
আপনার প্রথম ভেরিফায়েবল ক্রেডেনশিয়াল ইস্যু করতে প্রস্তুত? badges.ninja-তে বিনামূল্যে শুরু করুন — ভিজ্যুয়াল ডিজাইনার, পাবলিক ভেরিফিকেশন পেজ, PDF সার্টিফিকেট, Open Badge v2.0 আউটপুট। কোনো ক্রেডিট কার্ড প্রয়োজন নেই।
এই নিবন্ধটি যেভাবে তৈরি হয়েছে
এই ব্লগের কিছু পোস্ট এআই সহায়কের সাহায্যে খসড়া করা হয় এবং প্রকাশের আগে Badges Ninja টিম তা পর্যালোচনা, তথ্য যাচাই ও সম্পাদনা করে। প্রতিটি কোড নমুনা ও মূল্য লাইভ প্রোডাক্টের সাথে যাচাই করা হয়। আমাদের সম্পাদকীয় ও এআই প্রক্রিয়া সম্পর্কে আরও পড়ুন আমাদের সম্পাদকীয় প্রক্রিয়া পৃষ্ঠা .

লেখক সম্পর্কে
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.

