KoderKoder.ai
प्राइसिंगएंटरप्राइज़शिक्षानिवेशकों के लिए
लॉग इनशुरू करें

उत्पाद

प्राइसिंगएंटरप्राइज़निवेशकों के लिए

संसाधन

हमसे संपर्क करेंसपोर्टशिक्षाब्लॉग

कानूनी

प्राइवेसी पॉलिसीउपयोग की शर्तेंसुरक्षास्वीकार्य उपयोग नीतिदुरुपयोग रिपोर्ट करें

सोशल

LinkedInTwitter
Koder.ai
भाषा

© 2026 Koder.ai. सर्वाधिकार सुरक्षित।

होम›ब्लॉग›ऑनलाइन कोर्स वेब ऐप बनाएं: पाठ, प्रगति, और सर्टिफिकेट
27 मार्च 2025·8 मिनट

ऑनलाइन कोर्स वेब ऐप बनाएं: पाठ, प्रगति, और सर्टिफिकेट

लसन्स, क्विज़, प्रगति ट्रैकिंग, सर्टिफिकेट और एडमिन पैनल के साथ एक ऑनलाइन कोर्स वेब ऐप प्लान और बनाएं — डेटा मॉडल, UX, सुरक्षा, और लॉन्च टिप्स सहित।

ऑनलाइन कोर्स वेब ऐप बनाएं: पाठ, प्रगति, और सर्टिफिकेट

प्लेटफार्म के लक्ष्य और MVP स्कोप तय करें

किसी टेक स्टैक को चुनने या UI स्क्रीन स्केच करने से पहले, “पूरा” क्या दिखता है यह साफ़ करें। एक ऑनलाइन कोर्स प्लेटफ़ॉर्म साधारण लेसन लाइब्रेरी से लेकर पूरा LMS (कोहोर्ट्स, ग्रेडिंग, इंटीग्रेशन) सब कुछ हो सकता है। आपकी पहली जिम्मेदारियाँ इसे संकुचित करना हैं।

यह किसके लिए है?

अपने मुख्य यूज़र्स और हर एक को क्या करना चाहिए, नामकरण से शुरू करें:

  • Students: एनरोल (या एक्सेस प्राप्त) करें, पाठ देखें, आगे क्या है देखें, और कोर्स पूरा करें।
  • Instructors: कोर्स/पाठ बनाएं और समझें कि लर्नर कैसे प्रगति कर रहे हैं।
  • Admins: उपयोगकर्ताओं का प्रबंधन करें, एक्सेस इश्यूज़ ठीक करें, और सामग्री मॉडरेट करें।

एक व्यवहारिक टेस्ट: यदि आप किसी एक भूमिका को पूरी तरह हटा दें, तो क्या प्रोडक्ट अभी भी काम करेगा? अगर हाँ, तो उस भूमिका की सुविधाएँ संभवतः लॉन्च के बाद की होनी चाहिए।

मुख्य परिणाम परिभाषित करें

पहली रिलीज़ के लिए उन परिणामों पर ध्यान दें जिन्हें लर्नर्स महसूस करते हैं:

  • पाठों तक पहुँच (देखना/पढ़ना) एक स्पष्ट “अगला पाठ” पाथ के साथ।
  • प्रगति याद रखी जाए सेशन्स और डिवाइस पर।
  • समाप्ति मान्यता प्राप्त हो (और वैकल्पिक रूप से सर्टिफिकेट ट्रिगर हो)।

बाकी—क्विज़, डिस्कशन, डाउनलोड, कोहोर्ट—बाद में हो सकते हैं जब तक कि वे आपके शिक्षण मॉडल के लिए आवश्यक न हों।

MVP स्कोप: पहले क्या भेजना है और बाद में क्या रखना है

एक साफ़ MVP आमतौर पर शामिल करता है:

  • कोर्स + लेसन पेज, एक बेसिक कोर्स बिल्डर, और छात्र डैशबोर्ड
  • सरल प्रगति ट्रैकिंग (जैसे, "मार्क लेसन कंप्लीट")
  • एक बेसिक सर्टिफिकेट एलिजिबिलिटी नियम (उदा., सभी आवश्यक पाठ पूरे होने पर)

बाद के लिए बचाएं: उन्नत असेसमेंट, ऑटोमेशन वर्कफ़्लो, इंटीग्रेशन, मल्टी-इंस्ट्रक्टर रिवेन्यू स्प्लिट्स।

सफलता के मैट्रिक्स जल्दी चुनें

3–5 मेट्रिक्स चुनें जो आपके लक्ष्यों से मेल खाएं:

  • कोर्स कंपलीशन रेट
  • 7/30-दिन लर्नर रिटेंशन
  • साइनअप/एनरोलमेंट के बाद "पहला पाठ शुरू करने का समय"
  • 100 लर्नर्स पर सपोर्ट टिकट (खासकर लॉगिन/एक्सेस इश्यूज़)
  • सर्टिफिकेट जारी करने की दर (यदि सर्टिफिकेट मायने रखते हैं)

ये मैट्रिक्स फीचर रिक्वेस्ट्स की ढेरों के बीच स्कोप निर्णयों को इमानदार बनाए रखते हैं।

उपयोगकर्ता भूमिकाएँ और मुख्य वर्कफ़्लोज़

स्पष्ट उपयोगकर्ता भूमिकाएँ एक ऑनलाइन कोर्स प्लेटफ़ॉर्म को बनाना आसान और मेंटेन करना बहुत आसान बनाती हैं। यदि आप यह तय कर लें कि कौन क्या कर सकता है, तो आप भुगतान, सर्टिफिकेट, या नए कंटेंट प्रकार जोड़ते समय दर्दनाक री-राइट्स से बचेंगे।

तीन मूल भूमिकाएँ

अधिकांश कोर्स वेब ऐप तीन भूमिकाओं से शुरू कर सकते हैं: Student, Instructor, और Admin। आप बाद में रोल्स को बाँट सकते हैं (उदा., "Teaching Assistant" या "Support"), लेकिन ये तीन आवश्यक वर्कफ़्लोज़ कवर करते हैं।

Student वर्कफ़्लो: न्यूनतम घर्षण के साथ सीखना

एक छात्र का पाथ बिना झंझट के महसूस होना चाहिए:

  • कोर्स ब्राउज़ करें (सर्च, श्रेणियाँ, प्रीव्यू)
  • एनरोल करें (फ्री या पेड)
  • सीखना शुरू करें (लेसन खोलें, वीडियो/टेक्स्ट/क्विज़ खपत करें)
  • जहाँ छोड़ा था वहीं से जारी रखें (कंटिन्यू बटन, आख़िरी लेसन स्टेट)

डिज़ाइन का मुख्य विवरण: “रीज़्यूम” के लिए प्रोडक्ट को हर कोर्स पर एक छात्र की आख़िरी गतिविधि याद रखनी चाहिए (आख़िरी खोलने वाला लेसन, कंप्लीशन स्टेट, timestamps)। भले ही आप उन्नत प्रगति ट्रैकिंग को बाद में रखें, इस स्थिति के लिए पहले दिन से योजना बनाएं।

Instructor वर्कफ़्लो: सामग्री बनाना और परिणाम देखना

इंस्ट्रक्टर्स को दो बड़ी क्षमताओं की जरूरत होती है:

  1. पाठ बनाना और प्रबंधित करना: कोर्स आउटलाइन बनाएं, पाठ जोड़ें/संपादित करें, एसेट्स (PDFs, स्लाइड्स) अपलोड करें, और सामग्री को बिना मौजूदा एनरोलमेंट्स को तोड़े रीऑर्डर करें।
  2. लर्नर प्रगति देखना: देखें कितने लर्नर्स ने शुरू किया, पूरा किया, या किस लेसन पर ड्रॉप किया।

एक व्यवहारिक नियम: इंस्ट्रक्टर्स को आमतौर पर भुगतान, उपयोगकर्ता खातों, या प्लेटफ़ॉर्म-वाइड सेटिंग्स संपादित करने की अनुमति नहीं होनी चाहिए। उन्हें कोर्स सामग्री और कोर्स-स्तरीय इनसाइट्स पर फोकस रखें।

Admin वर्कफ़्लो: प्लेटफ़ॉर्म नियंत्रण और सपोर्ट

एडमिन परिचालन कार्य संभालते हैं:

  • उपयोगकर्ताओं का प्रबंधन (रोल बदलना, अकाउंट रिकवरी)
  • कोर्स का प्रबंधन (स्वीकृति/प्रकाशन/अनपब्लिश, नीतिगत मुद्दे संभालना)
  • भुगतान/रिफंड का प्रबंधन (यदि मोनेटाइज़्ड)
  • सपोर्ट मुद्दों का समाधान (एनरोलमेंट फिक्स, एक्सेस समस्याएँ)

रोल-आधारित अनुमतियों को जल्दी मैप करें

कोड करने से पहले अनुमतियों को एक सरल मैट्रिक्स के रूप में लिख दें। उदाहरण: “केवल एडमिन एक कोर्स डिलीट कर सकते हैं,” “इंस्ट्रक्टर्स अपने कोर्स के पाठ ही एडिट कर सकते हैं,” और “स्टूडेन्ट्स केवल उन कोर्स के पाठ एक्सेस कर सकते हैं जिनमें वे नामांकित हैं।” यह एक अभ्यास सुरक्षा गैप्स से बचाता है और भविष्य के माइग्रेशन काम को घटाता है।

कोर्स और पाठ सुविधाएँ (जो लर्नर सच में चाहते हैं)

लर्नर आपके प्लेटफ़ॉर्म को एडमिन सेटिंग्स से नहीं आंकते—वे इसे इस आधार पर आंकते हैं कि वे कितनी जल्दी कोर्स ढूँढ सकते हैं, क्या उन्हें मिलेगा, और बिना घर्षण के पाठों के माध्यम से कैसे आगे बढ़ेंगे। आपका MVP स्पष्ट संरचना, भरोसेमंद लेसन अनुभव, और सरल, अनुमानपत्रक पूर्णता नियमों पर केंद्रित होना चाहिए।

सीखने से मेल खाती कोर्स संरचना

एक ऐसी हायार्की से शुरू करें जो स्कैन करने में आसान हो:

  • Course → Modules/Sections → Lessons
  • पाठ हो सकते हैं वीडियो, टेक्स्ट, या मिक्स्ड
  • कोर्स या किसी विशिष्ट पाठ से डाउनलोड्स (PDFs, टेम्पलेट्स) सपोर्ट करें
  • हल्के क्विज़/असाइनमेंट जोड़ें जब वे सीखने को मजबूती दें (सिर्फ सजावट नहीं)

ऑथरिंग को सरल रखें: मॉड्यूल/पाठ रीऑर्डर करें, दृश्यता सेट करें (ड्राफ्ट/पब्लिश), और लर्नर के रूप में प्रीव्यू करें।

कोर्स कैटलॉग + लैंडिंग पेज जो पूछे "क्या यह मेरे लिए है?"

आपके कैटलॉग को तीन बुनियादी चीज़ों की ज़रूरत है: सर्च, फिल्टर, और फास्ट ब्राउज़िंग।

सामान्य फ़िल्टर: टॉपिक/कैटेगरी, स्तर, अवधि, भाषा, फ्री/पेड, और "प्रगति में"। प्रत्येक कोर्स का एक लैंडिंग पेज होना चाहिए जिसमें आउटकम्स, सिलेबस, प्रीक्विज़िट्स, इंस्ट्रक्टर जानकारी, और क्या शामिल है (डाउनलोड्स, सर्टिफिकेट, क्विज़) दिखे।

लेसन प्लेयर: ड्रॉप-ऑफ रोकने वाले छोटे विवरण

वीडियो लेसनों के लिए प्राथमिकता दें:

  • प्लेबैक स्पीड (0.75×–2×)
  • कैप्शन्स/सबटाइटल्स (और उन्हें अपलोड/मैनेज करने का तरीका)
  • जहाँ छोड़ा था वहीँ से रीज़्यूम

वैकल्पिक लेकिन मूल्यवान:

  • टाइमस्टैम्प-संबंधी नोट्स
  • बुकमार्क्स (किसी क्षण को सेव करें और बाद में लौटें)

टेक्स्ट लेसन्स को हेडिंग्स, कोड ब्लॉक्स, और साफ़ पढ़ने वाले लेआउट का समर्थन होना चाहिए।

प्रगति बनाने से पहले “समाप्ति” परिभाषित करें

लेसन प्रकार के अनुसार समापन नियम तय करें:

  • वीडियो: ≥ X% देखा गया (उदा., 90%) या अंत तक पहुँचना
  • टेक्स्ट: मैन्युअल रूप से "मार्क कंप्लीट" या (सावधानी से) स्क्रॉल-टू-बॉटम
  • क्विज़/असाइनमेंट: सबमिट, पास, या ग्रेडेड

फिर कोर्स समापन परिभाषित करें: सभी आवश्यक पाठ पूरे हों, या वैकल्पिक पाठों को अनुमति दें। ये विकल्प प्रगति बार, सर्टिफिकेट, और बाद के सपोर्ट टिकटों को प्रभावित करते हैं—इसलिए इन्हें पहले स्पष्ट कर दें।

प्रगति ट्रैकिंग: नियम, इवेंट्स, और एज केस

प्रगति ट्रैकिंग वह जगह है जहाँ लर्नर्स गति महसूस करते हैं—और जहाँ सपोर्ट टिकट अक्सर शुरू होते हैं। UI बनाने से पहले, हर स्तर पर “प्रगति” का क्या अर्थ है यह लिखें: lesson, module, और course।

प्रगति नियम परिभाषित करें (lesson → module → course)

लेसन स्तर पर, एक स्पष्ट समापन नियम चुनें: "मार्क कंप्लीट" बटन, वीडियो के अंत तक पहुँचना, क्विज़ पास करना, या संयोजन। फिर रोल-अप करें:

  • Module progress = मॉड्यूल में पूरे हुए पाठों का % (या पाठ के प्रकार के हिसाब से वेटेड)
  • Course progress = मॉड्यूल्स पर पूरे होने का समग्र प्रतिशत

यह स्पष्ट करें कि वैकल्पिक पाठ गिने जाएँ या नहीं। अगर सर्टिफिकेट प्रगति पर निर्भर है, तो बाद में अस्पष्टता न हो।

सही इवेंट्स को ट्रैक करें

एक छोटे, भरोसेमंद इवेंट सेट का उपयोग करें जिसे आप विश्लेषण के लिए भरोसा कर सकें:

  • started (पहली बार उन्होंने पाठ खोला)
  • last_viewed timestamp (जब वे लौटें तो अपडेट)
  • completed (जब आपका समापन नियम पूरा होता है)
  • quiz_passed (अटेम्प्ट काउंट और पास/फेल स्टोर करें)

इवेंट्स को कंप्यूटेड प्रतिशतों से अलग रखें। इवेंट्स तथ्य हैं; प्रतिशत नियम बदलने पर उन्हें फिर से गणना किया जा सकता है।

एज केस जिन्हें आपको जल्दी हैंडल करना चाहिए

पाठ फिर से देखना: जब छात्र कंटेंट फिर से खोले तो समापन रीसेट न करें—सिर्फ last_viewed अपडेट करें। पार्टियल वॉच: वीडियो के लिए थ्रेशहोल्ड (उदा., 90%) पर विचार करें और वॉच पोज़िशन स्टोर करें ताकि वे रीज़्यूम कर सकें। अगर आप ऑफ़लाइन नोट्स ऑफर करते हैं, तो नोट्स को स्वतंत्र रखें (बाद में सिंक), और उन्हें समापन सिग्नल न मानें।

छात्र डैशबोर्ड: “अगला कदम” स्पष्ट बनाएं

एक अच्छा छात्र डैशबोर्ड दिखाता है: करंट कोर्स, अगला पाठ, आख़िरी देखा गया, और सरल % कंप्लीशन। "Continue" बटन जोड़ें जो अगली अधूरी आइटम का डीप-लिंक दे (उदा., /courses/{id}/lessons/{id})। यह किसी भी शानदार चार्ट से अधिक ड्रॉप-ऑफ कम करता है।

सर्टिफिकेट: योग्यता, PDF जेनरेशन, और वेरिफिकेशन

सर्टिफिकेट सरल लगते हैं ("PDF डाउनलोड करें"), लेकिन वे नियम, सुरक्षा, और सपोर्ट को छूते हैं। यदि आप इन्हें पहले डिजाइन करते हैं, तो आप नाराज ईमेल्स से बचेंगे जैसे "मैंने सब कुछ पूरा किया—मुझे सर्टिफिकेट क्यों नहीं मिल रहा?"।

योग्यता के नियम (स्पष्ट बनाएं)

ऐसा नियम चुनें जिसे आपका सिस्टम सुसंगत रूप से आकलित कर सके:

  • Completion only: सर्टिफिकेट तब दें जब सभी आवश्यक पाठ मार्क कंप्लीट हों।
  • Quiz threshold: कुल स्कोर (उदा., 80%) या विशिष्ट क्विज़ पास करना आवश्यक हो।
  • Instructor approval: प्रोजेक्ट्स या कोहोर्ट के लिए उपयोगी; एक "Request review" स्टेप और अप्रूवल स्टेटस जोड़ें।

अंतिम निर्णय को एक स्नैपशॉट के रूप में स्टोर करें (eligible yes/no, कारण, timestamp, approver) ताकि परिणाम बाद में पाठ संपादन से न बदले।

सर्टिफिकेट में क्या शामिल होना चाहिए

कम से कम, हर सर्टिफिकेट रिकॉर्ड में ये फ़ील्ड डालें और PDF में रेंडर करें:

  • लर्नर का पूरा नाम (जैसा उनका प्रोफ़ाइल में दर्ज है)
  • कोर्स का नाम (और वैकल्पिक रूप से इंस्ट्रक्टर/ऑर्गनाइज़ेशन)
  • जारी करने की तिथि (और यदि लागू हो तो समाप्ति तिथि)
  • Unique certificate ID (मानव-पठनीय और सर्चेबल)

यह यूनिक ID सपोर्ट, ऑडिट और वेरिफिकेशन के लिए आधार बनता है।

PDF + वेरिफिकेशन पेज (दोनों का बेहतर संयोजन)

एक प्रायोगिक तरीका है PDF डाउनलोड के साथ एक शेयरएबल वेरिफिकेशन पेज जैसे /certificates/verify/<certificateId>।

PDF सर्वर-साइड जेनरेट करें ताकि यह ब्राउज़र के across consistent रहे। जब यूज़र "Download" पर क्लिक करें, तो या तो फ़ाइल लौटाएँ या एक अस्थायी लिंक दें।

आसान छेड़छाड़ रोकें

क्लाइंट-जनरेटेड PDFs और एडिटेबल HTML डाउनलोड से बचें। इसके बजाय:

  • PDFs सर्वर पर जेनरेट करें (या भरोसेमंद PDF सेवा का उपयोग करें)
  • डायरेक्ट डाउनलोड के लिए signed URLs छोटे एक्सपायरी के साथ उपयोग करें
  • ऑडिट लॉग रिकॉर्ड करें (issued, downloaded, revoked, reissued)

अंत में, रिवोकेशन सपोर्ट करें: अगर फ्रॉड या रिफंड मायने रखते हैं, तो आपको सर्टिफिकेट को अमान्य करने का तरीका चाहिए और वेरिफिकेशन पेज को स्पष्ट रूप से करंट स्टेटस दिखाना चाहिए।

डेटा मॉडल और स्टोरेज बेसिक्स

स्केल होने पर अपग्रेड करें
प्रोटोटाइप से प्रोडक्शन-रेडी बिल्ड पर जाएँ — डिप्लॉयमेंट, कस्टम डोमेन और इटरेशन्स के साथ।
Pro आज़माएँ

एक साफ़ डेटा मॉडल आपके कोर्स ऐप को आसानी से विस्तारित करने योग्य रखता है (नए लेसन प्रकार, सर्टिफिकेट, कोहोर्ट्स) बिना हर परिवर्तन को माइग्रेशन दुःस्वप्न बनाने के। छोटे टेबल/कलेक्शंस से शुरू करें और यह सोच समझकर तय करें कि क्या स्टेट के रूप में स्टोर करना है और क्या व्युत्पन्न किया जा सकता है।

कोर एंटिटीज़ (स्केल करने के लिए न्यूनतम)

न्यूनतम के रूप में आपको चाहिए:

  • users: प्रोफ़ाइल, ईमेल, रोल, स्थिति।
  • courses: टाइटल, विवरण, पब्लिश स्टेटस, मालिक/इंस्ट्रक्टर।
  • lessons: course_id, order, type (video/article/quiz), required flag।
  • enrollments: user_id, course_id, status, started_at, completed_at।
  • progress: user_id, course_id, lesson_id, completion state, timestamps।
  • certificates: user_id, course_id, certificate_id, issued_at, verification_code।

कोर्स संरचना (लेसन, ऑर्डरिंग, आवश्यकताएँ) को उपयोगकर्ता गतिविधि (प्रगति) से अलग रखें। यह रिपोर्टिंग और अपडेट्स को बहुत आसान बनाता है।

प्रगति और रिपोर्टिंग: सारांश के लिए मॉडल

मान लीजिए आपको रिपोर्टिंग चाहिए होगी जैसे "कोर्स द्वारा कंप्लीशन" और "कोहोर्ट द्वारा प्रगति"। भले ही आप दिन एक कोहोर्ट लॉन्च न करें, वैकल्पिक फ़ील्ड जोड़ें जैसे enrollments.cohort_id (nullable) ताकि बाद में समूह कर सकें।

डैशबोर्ड के लिए, हर पेज लोड पर हर प्रोग्रेस रो को स्कैन करने से बचें। एक हल्का enrollments.progress_percent फ़ील्ड रखें जिसे आप लेसन कंप्लीट होने पर अपडेट करें, या एनालिटिक्स के लिए नाइटली समरी टेबल जेनरेट करें।

वीडियो और डाउनलोड्स के लिए स्टोरेज

बड़े फ़ाइलों (वीडियो, PDFs, डाउनलोड्स) को ऑब्जेक्ट स्टोरेज (जैसे S3-compatible) में रखें और CDN के ज़रिये डिलीवर करें। DB में केवल मेटाडेटा स्टोर करें: फाइल URL/path, साइज, कंटेंट-टाइप, और एक्सेस नियम। इससे DB तेज़ रहता है और बैकअप्स मैनेज करना आसान होता है।

जल्दी जोड़ने योग्य इंडेक्सेस

उन क्वेरीज के लिए इंडेक्स जोड़ें जो आप लगातार चलाएँगे:

  • progress (user_id, course_id) — छात्र डैशबोर्ड के लिए
  • progress (user_id, lesson_id) — "क्या यह लेसन कंप्लीट है?" चेक्स के लिए
  • enrollments (course_id, status) — इंस्ट्रक्टर/एडमिन व्यूज़ के लिए
  • certificates (verification_code) — पब्लिक वेरिफिकेशन लुकअप्स (उदा., /certificate/verify)

आर्किटेक्चर और टेक स्टैक (इसे मेंटेनेबल रखें)

एक मेंटेनेबल आर्किटेक्चर नये फ्रेमवर्क का पीछा करने से ज़्यादा इस बारे में है कि आपकी टीम कौन से स्टैक पर आत्मविश्वास से सालों तक शिप और सपोर्ट कर सके। ऑनलाइन कोर्स प्लेटफ़ॉर्म के लिए "बोरिंग" विकल्प अक्सर जीतते हैं: प्रेडिक्टेबल डिप्लॉयमेंट, कंसिस्टेंट सेपरेशन ऑफ कॉनसर्न्स, और एक ऐसा DB मॉडल जो आपके प्रोडक्ट से मेल खाता है।

एक सरल स्टैक जो अधिकांश टीमों के लिए फिट बैठता है

एक व्यावहारिक बेसलाइन दिखती है:

  • Frontend: React (Next.js) या Vue (Nuxt) — तेज़, कम्पोनेंट-आधारित UI।
  • Backend: Node.js (NestJS/Express) या Python (Django/FastAPI) — सीधी APIs और मजबूत एकोसिस्टम।
  • Database: PostgreSQL — रिलेशनल डेटा (courses, lessons, enrollments, progress, certificates)।

यदि आपकी टीम छोटी है, तो "साफ़ सीमाओं वाला मोनोलिथ" आमतौर पर माइक्रोसर्विसेज से आसान होता है। आप मॉड्यूल्स को अलग रख सकते हैं (Courses, Progress, Certificates) और बाद में विकसित कर सकते हैं।

यदि आप शुरुआती चरण में तेज़ी से इटरेट करना चाहते हैं बिना नो-कोड सीमा में फँसे, तो Koder.ai जैसी प्लेटफ़ॉर्म मददगार हो सकती है: आप चैट में कोर्स वर्कफ़्लोज़ बताएं, प्लानिंग चरण में परिष्कृत करें, और React + Go + PostgreSQL ऐप जेनरेट करें जिसे आप डिप्लॉय, होस्ट, या सोर्स कोड के रूप में एक्सपोर्ट कर सकें।

API अप्रोच: REST बनाम GraphQL

दोनों काम कर सकते हैं। चुनें अपनी प्रोडक्ट और टीम की आदतों के अनुसार:

  • REST समझने में आसान, कैश करने योग्य, और डिबग करने में सरल। सामान्य एन्डपॉइंट्स:
    • GET /courses, GET /courses/:id
    • GET /lessons/:id
    • POST /progress/events (कम्प्लीशन, क्विज़ सबमिशन, वीडियो वॉच ट्रैक करने के लिए)
    • POST /certificates/:courseId/generate
    • GET /certificates/:id/verify
  • GraphQL जटिल डैशबोर्ड (स्टूडेंट डैशबोर्ड, एडमिन पैनल) के लिए ओवर-फेचिंग कम कर सकता है, लेकिन स्कीमा और रिज़ॉल्वर कॉम्प्लेक्सिटी जोड़ता है।

एक अच्छा समझौता है कि कोर वर्कफ़्लोज़ के लिए REST रखें और बाद में यदि डैशबोर्ड ऑप्टिमाइज़ेशन मुश्किल हो तो GraphQL लेयर जोड़ें।

लंबी-चलने वाली टास्क के लिए बैकग्राउंड जॉब्स

कोर्स प्लेटफ़ॉर्म में कई ऐसे टास्क होते हैं जिन्हें वेब रिक्वेस्ट ब्लॉक नहीं करना चाहिए। शुरू से ही queue/worker सेटअप उपयोग करें:

  • वीडियो प्रोसेसिंग/ट्रांस्कोडिंग (यदि आप अपलोड होस्ट करते हैं)
  • PDF सर्टिफिकेट जेनरेशन
  • ईमेल भेजना (वेलकम, कंप्लीशन नोटिफिकेशन्स, रसीद ईमेल)

सामान्य पैटर्न: Redis + BullMQ (Node), Celery + Redis/RabbitMQ (Python), या मैनेज्ड क्यू सर्विस। जॉब पेलोड को छोटा रखें (IDs, पूरे ऑब्जेक्ट्स नहीं), और जॉब्स को idempotent बनाएं ताकि retries सुरक्षित हों।

पहले दिन से लॉगिंग और मॉनिटरिंग

लॉन्च से पहले बेसिक ऑब्ज़रबिलिटी सेट करें, न कि किसी घटना के बाद:

  • Structured logs (request ID, user ID, course ID, job ID)
  • Error tracking (फ्रंटएंड + बैकएंड) असली त्रुटियाँ देखने के लिए
  • Performance monitoring स्लो रिक्वेस्ट और DB क्वेरीज के लिए
  • Job monitoring क्यू डेप्थ, retries, और dead-letter फेल्योर के लिए

यहाँ तक कि हल्के-फुल्के डैशबोर्ड जो आपको "certificate job failures" या "progress events spiking" अलर्ट करें, लॉन्च वीक में घंटों बचाएंगे।

एनरोलमेंट्स और पेमेंट्स (यदि आप मोनेटाइज़ करते हैं)

लाइव बीटा ऑनलाइन पाएं
अपना पहला वर्ज़न जल्दी डिप्लॉय और होस्ट करें, फिर बीटा फीडबैक के बाद विवरण सुधारें।
अब डिप्लॉय करें

मनी चार्ज करते ही आपको दो सवालों का साफ़ जवाब देना होगा: कौन नामांकित है और वे किस तक पहुँच के हकदार हैं।

नामांकन विकल्प: वही चुनें जो आप संभाल सकें

अधिकांश कोर्स ऐप एक या दो मॉडल से शुरू करते हैं और बाद में विस्तार करते हैं:

  • Free enrollment: ऑनबोर्डिंग और मार्केटिंग के लिए बेहतरीन।
  • One-time purchase: सबसे सरल; आम तौर पर "लाइफटाइम" एक्सेस (परिभाषा स्पष्ट करें)।
  • Subscription: सक्रिय रहते हुए कैटलॉग तक पहुंच; नवीनीकरण, फेल्ड पेमेंट, और कैंसलेशन हैंडल करना पड़ता है।
  • Coupons (optional): उपयोगी, पर एज केस जोड़ते हैं (समाप्ति, अधिकतम रेडेम्प्शन्स, स्टैक्ड डिस्काउंट्स)।

अपनी एनरोलमेंट रिकॉर्ड को ऐसे डिज़ाइन करें कि वह हर मॉडल को बिना हैक के प्रतिनिधित्व कर सके (उदा., price paid, currency, purchase type, start/end dates)।

पेमेंट्स: रीइन्वेंट न करें, इंटीग्रेट करें

एक पेमेंट प्रोवाइडर (Stripe, Paddle, आदि) का उपयोग करें और केवल आवश्यक पेमेंट मेटाडेटा स्टोर करें:

  • प्रोवाइडर कस्टमर ID
  • checkout/session ID
  • payment/charge ID (या invoice/subscription ID)
  • amount, currency, timestamps, status

रॉ कार्ड डेटा स्टोर करने से बचें—प्रोवाइडर को PCI कंप्लायंस संभालने दें।

खरीद के बाद पहुंच: एंटाइटलमेंट्स

एक्सेस को पर्चेज-आधारित फ्लैग्स पर निर्भर न रखें, बल्कि एनरोलमेंट-टाइर्ड एंटाइटलमेंट्स पर रखें।

प्रायोगिक पैटर्न:

  • पेमेंट इवेंट (webhook) एनरोलमेंट स्टेटस अपडेट करता है।
  • एनरोलमेंट एंटाइटलमेंट्स देता है (कोर्स एक्सेस, बंडल एक्सेस, सब्सक्रिप्शन कैटलॉग)।
  • हर लेसन/कोर्स रिक्वेस्ट एंटाइटलमेंट्स चेक करता है।

यदि आप प्राइसिंग टियर्स दिखा रहे हैं, तो उसे अपने प्रोडक्ट पेज (/pricing) के साथ संगत रखें। पेमेंट इंटीग्रेशन के इम्प्लीमेंटेशन डिटेल्स और वेबहुक गॉटचाज़ के लिए पाठकों को /blog/payment-integration-basics पर निर्देश दें।

सुरक्षा, गोपनीयता, और एक्सेस कंट्रोल

सुरक्षा किसी ऑनलाइन कोर्स प्लेटफ़ॉर्म पर बाद में "जोड़ने वाली" चीज़ नहीं है। यह पेमेंट्स, सर्टिफिकेट, निजी छात्र डेटा, और आपके इंस्ट्रक्टर्स के आईपी को प्रभावित करती है। अच्छी खबर: कुछ सुसंगत नियम अधिकांश रियल-वर्ल्ड रिस्क कवर कर देते हैं।

प्रमाणीकरण: उपयोगकर्ता कैसे साइन इन करते हैं

एक लॉगिन तरीका से शुरू करें और उसे भरोसेमंद बनाएं:

  • Email + password डिफ़ॉल्ट है। पासवर्ड को मजबूत हैशिंग (उदा., bcrypt/argon2) से स्टोर करें और पासवर्ड रिसेट सक्षम करें।
  • Magic links पासवर्ड सपोर्ट रिक्वेस्ट्स घटाते हैं, पर कड़ाई से लिंक एक्सपायरी और एक-बार उपयोग आवश्यक है।
  • SSO (optional) (Google/Microsoft या SAML) बाद में बड़ा ग्राहकों के लिए अच्छा है, पर जटिलता बढ़ाती है—सिर्फ तब करें जब खरीदार मांगें।

शॉर्ट-लाइव्ड सेशन्स, रीफ्रेश लॉजिक जहाँ जरुरी हो, और "सभी डिवाइसेज़ से लॉग आउट" विकल्प रखें ताकि सत्र प्रबंधन समझाने योग्य रहे।

अधिकारकरण: हर संवेदनशील कार्रवाई की जाँच करें

हर जगह authorization को लागू करें—UI, API, और DB एक्सेस पैटर्न।

आम रोल्स:

  • Admin: उपयोगकर्ता, कोर्स, पाउटआउट, प्लेटफ़ॉर्म सेटिंग्स मैनेज
  • Instructor: अपने कोर्स बनाएं/एडिट करें, अपने लर्नर्स देखें
  • Student: एनरोल्ड कंटेंट एक्सेस करें, असाइनमेंट सबमिट करें, सर्टिफिकेट डाउनलोड करें

हर संवेदनशील एन्डपॉइंट यह पूछना चाहिए: यह कौन है? उन्हें क्या करने की अनुमति है? किस रिसोर्स पर? उदाहरण: "इंस्ट्रक्टर केवल तभी लेसन संपादित कर सकता है जब वे कोर्स के मालिक हों।"

कोर्स कंटेंट की रक्षा (बिना ओवरइंजीनियरिंग के)

यदि आप वीडियो/फाइल्स होस्ट करते हैं, तो उन्हें सार्वजनिक URLs के रूप में न छोड़ें:

  • signed media URLs का उपयोग करें जो एक्सपायर होते हों (मिनट्स में, न कि दिनों में)
  • डाउनलोड्स, लॉगिन्स, और सर्टिफिकेट वेरिफिकेशन एन्डपॉइंट्स के लिए रेट लिमिट्स जोड़ें
  • बेसिक एंटी-स्क्रैपिंग लागू करें: थ्रॉटल, एज पर बॉट डिटेक्शन, और यदि आवश्यक हो तो PDFs पर वाटरमार्किंग

गोपनीयता: कम डेटा इकट्ठा करें, कम रखें

निजी डेटा को कम रखें: नाम, ईमेल, और प्रगति आमतौर पर पर्याप्त होते हैं।

रिटेंशन नियम परिभाषित करें (उदा., कानूनी अनुमति होने पर X महीनों के बाद निष्क्रिय खाते हटाएँ) और उपयोगकर्ताओं को एक्सपोर्ट/डिलीट अनुरोध करने दें। एडमिन क्रियाओं के लिए ऑडिट लॉग रखें, पर पूरा लेसन कंटेंट, टोकन्स, या पासवर्ड्स लॉग करने से बचें।

यदि आप पेमेंट्स हैंडल करते हैं, तो उस डेटा को अलग रखें और भुगतान प्रोवाइडर का उपयोग करें ताकि आप कार्ड डिटेल्स स्टोर न करें।

लर्निंग के लिए UX: समापन, प्रेरणा, और पहुँचनीयता

एक कोर्स ऐप तब सफल होता है जब लर्नर जल्दी शुरू कर सकें, अपना स्थान रखें, और निरंतर गति महसूस करें। UX को घर्षण कम करना चाहिए (अगला पाठ ढूँढना, क्या "पूरा" है समझना) और विभिन्न डिवाइस/क्षमताओं के लिए समावेशी रहना चाहिए।

मोबाइल-प्रथम लेसन अनुभव

छोटे स्क्रीन के लिए पहले डिजाइन करें: स्पष्ट टाइपोग्राफी, उदार लाइन-हाइट, और ऐसा लेआउट जो पिन्चिंग या हॉरिजॉन्टल स्क्रॉलिंग की आवश्यकता न हो।

लेसन फास्ट महसूस होने चाहिए। मीडिया को ऑप्टिमाइज़ करें ताकि पहला कंटेंट जल्दी रेंडर हो, और भारी अतिरिक्त (डाउनलोड्स, ट्रांस्क्रिप्ट्स, रिलेटेड लिंक) को मुख्य लेसन के बाद डिफर करें।

रीज़्यूम अनिवार्य है: कोर्स पेज और लेसन प्लेयर पर "Continue where you left off" दिखाएँ। वीडियो/ऑडियो के लिए आख़िरी पोज़िशन और टेक्स्ट के लिए आख़िरी पढ़े हुए स्थान को सहेजें ताकि लर्नर कुछ ही सेकंड में लौटा सकें।

प्रगति को दृश्यमान (और मायनेदार) बनाएं

लर्नर्स तब प्रेरित रहते हैं जब प्रगति स्पष्ट हो:

  • पूरे हुए पाठों पर चेकमार्क्स
  • कोर्स स्तर पर सरल प्रतिशत
  • एक स्पष्ट “Next step” संकेत (उदा., "Start Lesson 4" या "Take the quiz")

उलझनपूर्ण स्टेट्स से बचें। अगर समापन कई क्रियाओं पर निर्भर है (वॉच टाइम + क्विज़ + असाइनमेंट), तो लेसन के भीतर एक छोटा चेकलिस्ट दिखाएँ ताकि लर्नर जानें कि क्या गायब है।

हल्के जश्न मनाने वाले संकेत दें: एक छोटा पुष्टिकरण संदेश, अगला मॉड्यूल अनलॉक करना, या "आप X पाठ से खत्म होने वाले हैं" जैसा नudge—मददगार, न कि शोर।

पहुँचनीयता (Accessibility) को मूल में रखें

पहुँचनीयता को पोलिश न मानें:

  • वीडियो के लिए कैप्शन्स और ऑडियो-भारी लेसनों के लिए ट्रांस्क्रिप्ट
  • पूर्ण कीबोर्ड नेविगेशन (लेसन प्लेयर कंट्रोल सहित)
  • मजबूत रंग कंट्रास्ट और गैर-रंग संकेत (आइकन + टेक्स्ट)
  • पठनीय लेआउट: सुसंगत हेडिंग्स, छोटे पैरा, और स्कैनेबल स्पेसिंग

सपोर्ट जो ड्रॉप-ऑफ रोकता है

लर्नर्स अटकेंगे। एक पूर्वानुमानित पाथ दें:

  • /help या /faq पेज जो कोर्स और लेसन स्क्रीन से लिंक हो
  • एक सरल कॉन्टैक्ट फॉर्म जिसमें प्रत्याशित उत्तर समय लिखा हो (ऐसी वादे न करें जो आप पूरा न कर सकें)
  • बिलिंग मदद या रिफंड अनुरोध का एक दृश्यमान स्थान, जो आपकी वास्तविक नीति से जुड़ा हो

टेस्टिंग, एनालिटिक्स, और बीटा लॉन्च चेकलिस्ट

तैयार होने पर वेब से आगे बढ़ें
जब सीखने वालों को बेहतर ऑन-गो अनुभव चाहिए तो Flutter के साथ अपने प्लेटफ़ॉर्म को मोबाइल तक विस्तारित करें।
मोबाइल ऐप जोड़ें

प्रोग्रेस, सर्टिफिकेट, और एनरोलमेंट को व्यवसायिक लॉजिक मानकर असल टेस्ट कवरेज दें—वरना आप ऐसे सपोर्ट टिकट्स पाएंगे: "मेरा लेसन कहता है पूरा हुआ लेकिन कोर्स नहीं"।

सीखने के तरीके के अनुसार टेस्टिंग

प्रगति नियमों के आसपास यूनिट टेस्ट से शुरू करें, क्योंकि इन्हें नए लेसन प्रकार जोड़ने या समापन मानदंड बदलने पर तोड़ना आसान होता है। एज केस कवर करें जैसे:

  • लर्नर आउट-ऑफ-ऑर्डर लेसन पूरे कर देते हैं
  • एक लेसन को पूरा करने के बाद अपडेट किया गया (क्या वह पूरा बना रहता है?)
  • रिटेक्स और रीसेट्स (खासकर सर्टिफिकेट्स शामिल होने पर)

फिर एनरोलमेंट फ्लोज़ के लिए इंटीग्रेशन टेस्ट जोड़ें: साइन अप → एनरोल → लेसन्स एक्सेस → कोर्स पूरा करें → सर्टिफिकेट जेनरेट। अगर आप पेमेंट सपोर्ट करते हैं, तो एक "हैप्पी पाथ" और कम से कम एक फ़ेल्योर/रिट्राई परिदृश्य कवर करें।

सिड डेटा जो सच्चाई बताता है

रियलिस्टिक कोर्सेस के लिए सीड डेटा बनाएं ताकि डैशबोर्ड और रिपोर्टिंग का सत्यापन हो सके। एक छोटा कोर्स और एक "असल" कोर्स जिसमें सेक्शन्स, क्विज़, वैकल्पिक पाठ, और एक से ज़्यादा इंस्ट्रक्टर्स हों, जल्दी UI गैप्स सामने लाएगा।

आप जिन एनालिटिक्स इवेंट्स का वास्तव में उपयोग करेंगे

एनालिटिक्स इवेंट्स को सावधानीपूर्वक ट्रैक करें और नामकरण में सुसंगत रहें। एक व्यावहारिक स्टار्टर सेट:

  • lesson_started
  • lesson_completed
  • course_completed
  • certificate_issued
  • certificate_verified

साथ ही संदर्भ कैप्चर करें (course_id, lesson_id, user_role, device) ताकि आप ड्रॉप-ऑफ का निदान और परिवर्तनों के प्रभाव का मापन कर सकें।

बीटा लॉन्च: छोटा, संरचित, और ईमानदार

पूरा लॉन्च करने से पहले एक छोटा बीटा चलाएँ, कुछ कोर्स क्रिएटर्स और लर्नर्स के साथ। क्रिएटर्स को एक चेकलिस्ट दें (कोर्स बनाएं, प्रकाशित करें, एडिट करें, लर्नर प्रगति देखें) और उनसे बताने को कहें कि क्या भ्रमित करता है। उन फिक्सेस को प्राथमिकता दें जो सेटअप समय घटाएँ और कंटेंट गलतियों को रोकें—ये ही वे दर्द बिंदु हैं जो अपनाने में बाधा डालते हैं।

यदि चाहें, बीटा के दौरान /status पर एक हल्का “Known issues” पेज प्रकाशित करें ताकि सपोर्ट लोड कम हो।

यदि आप तेज़ी से इटरेट कर रहे हैं, तो सेफ़ रोलबैक अपनी प्रक्रिया का हिस्सा बनाएं। उदाहरण के लिए, Koder.ai स्नैपशॉट्स और रोलबैक सपोर्ट करता है, जो उपयोगी है जब आप प्रगति नियम या सर्टिफिकेट जेनरेशन बदल रहे हों और बीटा के दौरान तेज़ी से वापसी चाहें।

लॉन्च के बाद स्केलिंग और रोडमैप

MVP लॉन्च करने के बाद असली प्रोडक्ट वर्क शुरू होता है: आप समझेंगे कि किन कोर्सेस पर ट्रैफिक आता है, लर्नर्स कहाँ ड्रॉप करते हैं, और एडमिन किस चीज़ पर ज़्यादा समय खर्च करते हैं। इंक्रीमेंटल स्केलिंग की योजना बनाएं ताकि आप दबाव में "दोबारा बनाना" न पड़ें।

प्रदर्शन मूल बातें जो जल्दी लाभ देती हैं

बड़े इन्फ्रास्ट्रक्चर बदलावों से पहले सरल जीतें करें:

  • कॅश करें उन कोर्स पेजों को जो अक्सर नहीं बदलते (कोर्स लैंडिंग पेज, लेसन आउटलाइन)। इंस्टक्रक्टर अपडेट पर कॅश पर्ज करें।
  • कैटलॉग और सर्च रिज़ल्ट्स को पेजिनेट करें ताकि लाइब्रेरी बढ़ने पर रिस्पॉन्स तेज रहे।
  • इमेजेस ऑप्टिमाइज़ करें (अपलोड पर रीसाइज़, मॉडर्न फॉर्मैट सर्व करें जब संभव हो, और लेसन पेज में lazy-load)। इससे लोड टाइम और सपोर्ट टिकट दोनों घटेंगे ("वीडियो स्लो है","पेज नहीं खुल रहा")।

बिना सिरदर्द के मीडिया डिलीवरी

वीडियो और बड़े फ़ाइलें आमतौर पर आपका पहला स्केलिंग बॉटलनेक हैं।

  • स्थिर एसेट्स के लिए CDN का उपयोग करें।
  • वीडियो के लिए adaptive streaming लक्ष्य रखें (ताकि मोबाइल या धीमे कनेक्शन पर भी स्मूद प्लेबैक रहे)।

यहाँ तक कि यदि आप बेसिक फ़ाइल होस्टिंग से शुरू करते हैं, तो ऐसा रास्ता चुनें जो मीडिया डिलीवरी अपग्रेड करने पर पूरे ऐप को न बदलना पड़े।

दिन-प्रतिदिन ऑपरेशन के लिए एडमिन टूल्स

उपयोग बढ़ने पर ऑपरेशनल टूल्स उतने ही मायने रखते हैं जितने लर्नर फीचर्स:

  • कंटेंट मॉडरेशन (फ्लैगिंग, छिपाना, रिपोर्ट की समीक्षा)
  • यूज़र सपोर्ट टूल्स (इम्पर्सोनेशन सावधानियों के साथ, इनवाइट्स री-सेन्ड, जब उचित हो तो प्रगति रीसेट)
  • ऑडिट ट्रेल (किसने लेसन बदला, किसने सर्टिफिकेट जारी किया, किसने एनरोलमेंट रिफंड किया)

रोडमैप आइडियाज (केवल जब आप तैयार हों)

कोर लेसन्स और प्रगति ट्रैकिंग स्थिर होने के बाद अच्छे अगले चरण:

  • Cohorts स्टार्ट डेट्स और साझा पेसिंग के साथ
  • Live sessions (कैलेंडर, रिमाइंडर, अटेंडेंस)
  • Discussion boards जो लेसन्स से जुड़े हों
  • मल्टी-भाषा कोर्सेस (अनुवादित टाइटल्स, सबटाइटल्स, और लोकलाइज़्ड सर्टिफिकेट)

प्रत्येक को एक छोटे MVP की तरह ट्रीट करें और स्पष्ट सफलता मैट्रिक्स रखें ताकि विकास नियंत्रित और मेंटेनेबल रहे।

अक्सर पूछे जाने वाले प्रश्न

ऑनलाइन कोर्स वेब ऐप के लिए MVP में क्या शामिल होना चाहिए?

शुरुआत में न्यूनतम शिक्षार्थी परिणाम पर ध्यान दें:

  • शिक्षार्थी स्पष्ट क्रम में पाठों तक पहुंच सकें ("अगला पाठ")।
  • प्रगति सेशन्स/डिवाइस्स पर याद रहे।
  • समापन को पहचाना जाए (वैकल्पिक रूप से सर्टिफिकेट के साथ)।

यदि किसी फीचर का सीधा संबंध इन परिणामों से नहीं है (जैसे चर्चा, जटिल क्विज़, गहरे इंटीग्रेशन), तो उसे लॉन्च के बाद के रोडमैप पर रखें जब तक वह आपके शिक्षण मॉडल के लिए केंद्रीय न हो।

शुरू में मुझे किन उपयोगकर्ता भूमिकाओं की ज़रूरत है, और प्रत्येक क्या कर पाएगा?
  • Student: नामांकन/सामग्री तक पहुंच, फिर से शुरू करना, पाठ पूरे करना।
  • Instructor: पाठ बनाना/रीऑर्डर करना, प्रकाशित करना, कोर्स-स्तरीय प्रगति देखना।
  • Admin: उपयोगकर्ता प्रबंधन, एक्सेस समस्याओं का समाधान, सामग्री मॉडरेट/प्रकाशित करना, रिफंड संभालना (यदि पेड हो)।

यदि किसी भूमिका को हटाने से प्रोडक्ट नहीं टूटता, तो उसके फीचर शायद लॉन्च के बाद के लिए होने चाहिए।

मैं रोल-आधारित अनुमतियाँ कैसे परिभाषित करूँ ताकि सुरक्षा में गैप न आए?

कोड लिखने से पहले एक साधारण permissions मैट्रिक्स बनाएं और इसे API में लागू करें (केवल UI पर नहीं)। सामान्य नियम:

  • छात्र केवल उन कोर्स के पाठों तक पहुँच सकें जिनके लिए वे नामांकित हैं।
  • प्रशिक्षक केवल उन पाठों को एडिट कर सकें जो उनके अपने कोर्स में हैं।
  • केवल एडमिन कोर्स डिलीट कर सके, भूमिकाएँ बदल सके, या प्लेटफॉर्म-व्यापी सेटिंग्स मैनेज कर सके।

हर संवेदनशील एंडपॉइंट पर authorization को एक अनिवार्य चेक मानें।

मैं कोर्स, मॉड्यूल और पाठ को कैसे संरचित करूँ?

लर्नर के लिए स्कैन करने लायक एक और सीखने के अनुरूप हायारकी उपयोग करें:

  • Course → Modules/Sections → Lessons

ऑथरिंग को सरल रखें:

  • मॉड्यूल/पाठों का रीऑर्डर
  • ड्राफ्ट/पब्लिश दृश्यता
  • लर्नर के रूप में प्रीव्यू

डाउनलोड्स को कोर्स या किसी विशिष्ट पाठ से जोड़ें, और क्विज़/असाइनमेंट केवल तब जोड़ें जब वे सीखने को सार्थक रूप से मजबूत करें।

लर्नरों के लिए “जहाँ छोड़ा था वहीं से जारी रखें” को मैं कैसे लागू करूँ?

“रीज़्यूम” वर्कफ़्लो को प्राथमिकता दें:

  • प्रति कोर्स last lesson opened स्टोर करें।
  • last_viewed timestamp स्टोर करें।
  • वीडियो/ऑडियो के लिए playback position स्टोर करें।

फिर एक सिंगल “Continue” बटन दें जो अगली अधूरी आइटम पर डायरेक्ट लिंक करे (उदा., /courses/{id}/lessons/{id}) ताकि ड्रॉप-ऑफ कम हो।

मैं यह कैसे तय करूँ कि पाठ और कोर्स का 'समाप्त' होना क्या माना जाएगा?

पाठ प्रकारों के अनुसार समापन नियम परिभाषित करें और स्पष्ट रखें:

  • Video: ≥ X% देखा गया (जैसे 90%) या अंत तक पहुँचना।
  • Text: मैनुअल “मार्क कंप्लीट” (स्क्रॉल-टू-बॉटम रिस्की है)।
  • Quiz/assignment: सबमिट, पास, या ग्रेड किया गया।

फिर कोर्स समापन परिभाषित करें (सभी आवश्यक पाठ बनाम वैकल्पिक पाठ छोड़ना) ताकि प्रोग्रेस बार और सर्टिफिकेट सार्थक हों।

प्रगति और एनालिटिक्स के लिए मुझे कौन से इवेंट्स ट्रैक करने चाहिए?

निश्चित, विश्वसनीय इवेंट्स को तथ्य के रूप में ट्रैक करें:

  • started
  • last_viewed
  • completed
  • quiz_passed (प्रयास संख्या और पास/फेल सहित)

इवेंट्स को कंप्यूटेड प्रतिशतों से अलग रखें। अगर आप बाद में समापन नियम बदलते हैं, तो आप हिस्टोरिकल इवेंट्स से प्रोग्रेस को पुनर्गणना कर सकेंगे।

कौन से प्रगति-ट्रैकिंग एज केस मुझे जल्दी हैंडल करने चाहिए?

आम एज केस के लिए पहले से डिजाइन करें:

  • किसी पाठ को फिर से खोलने पर समापन रीसेट न करें—सिर्फ last_viewed अपडेट करें।
  • वीडियो प्रगति के लिए पार्टिशल वॉच और रीज़्यूम पोज़िशन को संभालें।
  • अगर पाठ संपादित किए जाएँ completion के बाद, तो तय करें क्या completion वैध रखनी है।

आउट-ऑफ़-ऑर्डर कंप्लीशन, रिटेक/रीसेट, और सर्टिफिकेट ट्रिगर फ़्लोज़ के लिए टेस्ट जोड़ें ताकि "मैंने सब कुछ पूरा किया" वाले सपोर्ट टिकट कम हों।

मैं सर्टिफिकेट योग्यता कैसे डिजाइन करूँ ताकि यह सही और डिबग करने योग्य हो?

सुस्पष्ट योग्यता नियम चुनें जिन्हें आपका सिस्टम लगातार आकलित कर सके:

  • Completion-only: जब सभी आवश्यक पाठ कंप्लीट हों।
  • Quiz threshold: कुल स्कोर (उदा., 80%) या विशिष्ट क्विज़ पास करना।
  • Instructor approval: प्रोजेक्ट या कोहोर्ट कोर्स के लिए; एक “Request review” स्टेप और अप्रूवल स्टेटस जोड़ें।

फाइनल निर्णय को एक स्नैपशॉट के रूप में स्टोर करें (eligible yes/no, कारण, timestamp, approver) ताकि पाठों में संशोधन बाद में परिणाम न बदल दे।

कोर्स सर्टिफिकेट्स को जेनरेट और वेरिफाई करने का सबसे सुरक्षित तरीका क्या है?

दोनों करें:

  • टेम्पलेट से सर्वर-साइड PDF जेनरेट करें ताकि रेंडरिंग सभी ब्राउज़रों में स्थिर रहे।
  • एक सार्वजनिक वेरिफिकेशन पेज जैसे /certificates/verify/<certificateId> दें।

धोखाधड़ी कम करने के लिए:

विषय-सूची
प्लेटफार्म के लक्ष्य और MVP स्कोप तय करेंउपयोगकर्ता भूमिकाएँ और मुख्य वर्कफ़्लोज़कोर्स और पाठ सुविधाएँ (जो लर्नर सच में चाहते हैं)प्रगति ट्रैकिंग: नियम, इवेंट्स, और एज केससर्टिफिकेट: योग्यता, PDF जेनरेशन, और वेरिफिकेशनडेटा मॉडल और स्टोरेज बेसिक्सआर्किटेक्चर और टेक स्टैक (इसे मेंटेनेबल रखें)एनरोलमेंट्स और पेमेंट्स (यदि आप मोनेटाइज़ करते हैं)सुरक्षा, गोपनीयता, और एक्सेस कंट्रोललर्निंग के लिए UX: समापन, प्रेरणा, और पहुँचनीयताटेस्टिंग, एनालिटिक्स, और बीटा लॉन्च चेकलिस्टलॉन्च के बाद स्केलिंग और रोडमैपअक्सर पूछे जाने वाले प्रश्न
शेयर करें
Koder.ai
Koder के साथ अपना खुद का ऐप बनाएं आज ही!

Koder की शक्ति को समझने का सबसे अच्छा तरीका खुद देखना है।

मुफ्त शुरू करेंडेमो बुक करें
  • क्लाइंट-जनरेटेड PDFs से बचें
  • डाउनलोड के लिए शॉर्ट-एक्सपायरी signed URLs का प्रयोग करें
  • आडिट लॉग रखें (issued/downloaded/revoked/reissued)
  • हमेशा रिवोकेशन सपोर्ट करें ताकि वेरिफिकेशन वर्तमान स्थिति दिखाए।