أستاذ مينا شيكوريل
منظومة تدريس كاملة لمدرّس دراسات اجتماعية: لوحة تحكم تدير المجموعات والحصص والحضور والامتحانات والاشتراكات والمدفوعات، وبوابة للطالب قابلة للتثبيت على الطرف الآخر من واجهة البرمجة نفسها. وأي رقم مسجَّل — للطالب أو لولي أمره — يفتح الملف نفسه.


سجل واحد يديره المدرّس ويفتحه ولي الأمر.
السجل نفسه هو المنتج، فكان لا بد أن يكون صحيحًا.
في الدروس الخصوصية تتوزّع المتابعة المالية والحضور والدرجات على ثلاثة أماكن: دفتر، ومحادثة واتساب، وذاكرة المدرّس. وكل سؤال يطرحه ولي الأمر — كم حصة تبقّت، ولمَ انخفضت الدرجة، وكم المتبقي من الاشتراك — يُعاد تجميع إجابته يدويًا.
لذلك لم تكن المهمة شاشة تُصمَّم، بل تحديد ما تعنيه الحصة والنتيجة والدفعة فعلًا، ثم فرض هذه التعريفات في قاعدة البيانات وواجهة البرمجة لا في الواجهة. فلوحة المدرّس وبوابة الطالب نافذتان على السجل نفسه — ويحصل ولي الأمر، وهو من يدفع وأقل من يرى، على نافذته الخاصة.
ثلاثة أسطح فوق سجل واحد.
واجهة برمجة Laravel في المنتصف، ولوحة تحكم للمدرّس على جانب، وبوابة للقراءة فقط للطالب ولولي الأمر على الجانب الآخر.
لوحة المدرّس
المكان الذي يُدار منه اليوم فعلًا: البنية الأكاديمية والطلاب وكشف الحضور والدرجات والحسابات — تسع شاشات، لا صفحة إعدادات مضافة إلى موقع.
- مجموعات بجداول أسبوعية تولّد حصصها
- كشوف حضور ودرجات لمجموعة كاملة دفعة واحدة
- اشتراكات ومدفوعات وتقارير وإعدادات
بوابة الطالب وولي الأمر
السجل نفسه للقراءة فقط، مثبَّت من المتصفح. يدخل رقم الطالب أو رقم ولي الأمر إلى الملف ذاته، فلا حساب ثانٍ يحتاج إلى مزامنة.
- الحضور والدرجات ورصيد الاشتراك
- الجدول وسجل الإشعارات
- إشعارات ويب مباشرة إلى الهاتف
واجهة البرمجة والقواعد
كل قاعدة مذكورة أدناه تعيش هنا لا في تحقّق نموذج. ويحمل المدرّس والطالب صلاحيات توكن مختلفة، فلا تصل البوابة إلى مسار كتابة ولو بالخطأ.
- صلاحيات توكن منفصلة للمدرّس وللطالب
- تحديد معدل المحاولات على مساري الدخول
- مهمة مجدولة للانتهاء والإقفال والتذكير
القرارات التي تجعل السجل جديرًا بالثقة.
كل قاعدة منها مفروضة في بنية قاعدة البيانات أو في واجهة البرمجة، ولكل واحدة اختبار يسقط إذا توقفت عن الصحة.
السعر يُجمَّد عند التسجيل
اسم الباقة وسعرها وعدد حصصها تُنسَخ إلى الاشتراك وقت إنشائه، فتغيير سعر الباقة لاحقًا لا يمسّ اشتراكًا اتُّفق عليه من قبل.
الدفعات الجزئية تتجمّع
المبلغ المدفوع هو مجموع صفوف المدفوعات ويُعاد حسابه بعد كل عملية. لا أحد يكتب الإجمالي بيده، فلا ينحرف.
الغياب بعذر لا يكلّف شيئًا
خصم الحصة من عدمه علَمٌ مستقل في صف الحضور، وأي الحالات تخصم حصة إعدادٌ لا قاعدة مدفونة في الكود.
الامتحان الفائت ليس صفرًا
النتيجة إما قيد الرصد أو مرصودة أو غياب أو لم يُؤدَّ أو صفر صريح. ولا يتحول الغياب إلى درجة من تلقاء نفسه — على المدرّس أن يقصدها.
رقم واحد لطالب واحد
فهرس فريد على الرقم يجعل الحساب المكرر مستحيلًا على مستوى قاعدة البيانات، وكل رقم في الملف — للطالب ولولي الأمر — يفتح الملف نفسه.
البوابة تقرأ ولا تكتب
توكن الطالب يحمل صلاحية قراءة فقط ومعرّفه هو، فلا يستطيع طلب ملف طالب آخر — وجلسة الطالب الموقوف تتوقف عند أول طلب تالٍ.
على الشاشة الرئيسية — وإصلاح يصل فعلًا.
تُسلَّم البوابة كتطبيق ويب تقدّمي قابل للتثبيت. يفتح الطالب الموقع ويختار «إضافة إلى الشاشة الرئيسية»، فيعمل بعدها كأي تطبيق — الحساب نفسه والبيانات نفسها، دون تحميل ودون دورة مراجعة في متجر تفصل بين إصلاح الخطأ ووصوله. ولأن الجمهور يستخدم أجهزة أندرويد متفاوتة وغالبًا قديمة، يزيل ذلك أكبر عائقين أمام الاستخدام: مساحة التخزين، والمتجر نفسه.
وعامل الخدمة مكتوب بأيدينا لا مولَّد، لأن السلوك الافتراضي فخّ: تُثبَّت النسخة الجديدة ثم تنتظر إغلاق كل النوافذ، ومن لا يغلق التطبيق أبدًا يظل على نسخة قديمة مهما رُفع من إصلاحات. هذه النسخة تتولى العمل فورًا، وبيانات الواجهة البرمجية لا تُخزَّن مؤقتًا إطلاقًا، والإشعارات تصل إلى الهاتف. وعلى جانب المدرّس تُكتب الرسائل في طابور فور وقوع الحدث — غياب أو درجة أو دفعة — وتخرج عبر جهاز واتساب يُربط بمسح رمز QR من صفحة الإعدادات.


