Questions هو تطبيق ويب قمت بتطويره، وهو يتيح للمستخدمين دراسة الأسئلة التي ينشئونها بأنفسهم أو يشاركها معهم مستخدمون آخرون. يوفر التطبيق منصة مرنة لتنظيم ومشاركة ودراسة المحتوى التعليمي مع ميزات متقدمة للتتبع والترتيب.
ملاحظة: Questions كان مشروع تخرجي في دورة CS50’s Web Programming with Python and JavaScript من جامعة هارفارد، وقد طورته بالكامل من مرحلة الفكرة حتى التطبيق.
المزايا الأساسية
- تنظيم الأسئلة باستخدام الـ Decks والـ Tags والـ Lists لإدارة مرنة
- مشاركة الـ Decks مع العامة أو عبر روابط وصول خاصة مع تحديثات تلقائية للمشتركين
- دعم أسئلة الـ MCQs مع خيارات إجابة مرنة وأسئلة المقال
- ميزات دراسة متقدمة تشمل طرق ترتيب متعددة وتتبع التقدم ومؤشرات الصعوبة
- تعلم تعاوني مع تقييمات صعوبة مبنية على استجابات المستخدمين
التنظيم
يتم تنظيم الأسئلة من خلال ثلاثة أنظمة متكاملة:
- الـ Decks: الحاويات الأساسية للأسئلة. كل سؤال ينتمي إلى deck واحد فقط.
- الـ Tags: علامات مرنة يمكن تطبيقها على أسئلة متعددة عبر decks مختلفة.
- الـ Lists: مجموعات مخصصة يمكنها جمع أسئلة من decks مختلفة، متجاوزة حدود الـ decks.
ميزات المشاركة
- المشاركة العامة: يمكن جعل الـ decks قابلة للاكتشاف علنًا عبر صفحة Explore ليجدها جميع المستخدمين ويشتركوا فيها.
- روابط الوصول الخاصة: مشاركة الـ decks مع مستخدمين محددين عبر روابط وصول فريدة.
- التحديثات الديناميكية: عندما يضيف منشئ الـ deck أسئلة أو يحذفها، يتلقى جميع المشتركين هذه التغييرات تلقائيًا بشكل قابل للقراءة فقط (read-only).
- التحكم في الوصول: إذا تم تعطيل طرق المشاركة، يفقد المستخدمون المشتركون عبر تلك الطريقة الوصول بينما يحتفظ الآخرون بوصولهم.
- مؤشر الصعوبة: يحسب التطبيق تلقائيًا مؤشر صعوبة بناءً على كيفية إجابة المستخدمين، ويصبح أكثر دقة كلما أجاب المزيد من الأشخاص.
- إحصائيات الإجابات: بعد الإجابة على أسئلة الـ MCQs، يرى المستخدمون نسبة الأشخاص الذين اختاروا كل خيار.
أنواع الأسئلة
أسئلة الـ MCQs
- عدد مرن من خيارات الإجابة (2 أو أكثر بدون حد أقصى)
- إجابة صحيحة واحدة لكل سؤال
- شروحات اختيارية لكل خيار إجابة وللسؤال ككل
- التحقق الذكي يمنع الأخطاء الشائعة أثناء الإنشاء والتعديل
أسئلة المقال
- تنسيق سؤال وجواب مفتوح
- شروحات اختيارية لسياق إضافي
خصائص الأسئلة
- الـ Flags: وضع علامة على الأسئلة لأغراض محددة
- مستوى الصعوبة (Difficulty Level): مستويات يحددها المؤلف (سهل، متوسط، صعب) لتنظيم الأسئلة
- مؤشر الصعوبة (Difficulty Index): يتم حسابه تلقائيًا بناءً على أداء المستخدمين الفعلي
ميزات الدراسة
طرق ترتيب متعددة:
- الترتيب الافتراضي (ترتيب الإضافة)
- ترتيب عشوائي
- ترتيب أبجدي (حسب نص السؤال)
- مستوى الصعوبة (يحدده المؤلف)
- مؤشر الصعوبة (بناءً على الأداء)
- وقت الإنشاء
- وقت التعديل
- الـ Tags
- عدد الأشخاص الذين أجابوا (مفيد لتحسين دقة مؤشر الصعوبة)
خيارات دراسة إضافية:
- الترتيب العكسي: يمكن عكس أي طريقة ترتيب للترتيب التنازلي
- تتبع التقدم: استئناف الدراسة من حيث توقفت
- إعادة تعيين التقدم: خيار لإعادة بدء دراسة الـ deck أو الـ list من البداية
لقطات الشاشة
فيديو توضيحي
التقنيات المستخدمة
قمت ببناء Questions باستخدام التقنيات التالية:
- Django (Python)
- JavaScript
- HTML, CSS, Bootstrap
خلفية التطوير
لقد وضعت تصورًا لهذا المشروع وقمت بتصميمه وتنفيذه بالكامل من الصفر كمشروع تخرجي في دورة CS50’s Web Programming with Python and JavaScript من جامعة هارفارد. استغرق التطوير أكثر من شهر لإكماله، وكان واحدًا من أوائل المشاريع التي أنشأتها باستخدام Django.
يمكنك الاطلاع على شهادتي في CS50 Web Programming من هنا.
التعقيد التقني
يطبق Questions منطقًا متطورًا للتعامل مع سيناريوهات المستخدم المختلفة:
- تقدم متعدد المستخدمين: يمكن لعدة مستخدمين الاشتراك في deck واحد مع الحفاظ على تقدم وتفضيلات دراسة فردية.
- تحكم المؤلف: يمكن لمؤلف الـ deck فقط تعديل المحتوى، مع تسليم التغييرات للمشتركين في وضع القراءة فقط (read-only).
- بنية MCQ مرنة: معالجة ديناميكية لأعداد متغيرة من خيارات الإجابة مع التحقق الذكي على الـ frontend والـ backend.
- إدارة الوصول: يتم تتبع طرق الاشتراك في قاعدة البيانات، مما يتيح التحكم الدقيق في الوصول عند تغيير إعدادات المشاركة.
روابط المشروع
جرب التطبيق في العرض الحي على questionsapp.azurewebsites.net




