تقني / البنية
المنصة

البنية العامة

نظرة تقنية على مكوّنات المنصة وكيفية ارتباطها.

المكدّس التقني

الطبقةالتقنية
التطبيقASP.NET Core — نمط MVC مع صفحات Razor تُبنى على الخادم
قاعدة البياناتSQL Server، مع اعتماد كبير على Stored Procedures
المهام المجدولةHangfire (تذكيرات، تقارير، فحص الوسائط، تنبيهات)
الزمن الحقيقيSignalR (المحادثات، السبورة التفاعلية)
الواجهةBootstrap 5 + قالب Velzon، jQuery، Quill للنصوص المنسّقة
التشغيلDocker Compose خلف Caddy كوكيل عكسي

تعدّد الأكاديميات

المنصة تخدم أكثر من أكاديمية على نفس قاعدة البيانات. العزل يتم على مستوى الكود: صاحب الأكاديمية والمشرف محصوران في أكاديميتهما، ومدير النظام فقط يرى كل شيء.

قاعدة أمنية ثابتة أي شاشة أو إجراء جديد يخص الأكاديميات يجب أن يتحقق من انتماء المستخدم للأكاديمية قبل القراءة أو التعديل. عدم القيام بذلك يفتح ثغرة تسريب بين الأكاديميات.

الصفحات العامة

صفحات الزوار (الرئيسية، صفحة الأكاديمية، الأسعار، الشروط) مستقلة عن القالب الإداري — لكل منها ترويستها وتذييلها. لذلك أي عنصر مشترك (مثل زر تبديل اللغة) يجب إضافته لها صراحة.

الهوية البصرية لكل أكاديمية

عند فتح صفحة أكاديمية أو صفحة دخول بسياق أكاديمية، تتبدّل الهوية تلقائيًا: الشعار، الاسم، أيقونة المتصفح، وعنوان الصفحة.

الحماية من التلاعب بالروابط

  • لا تُستخدم أرقام متسلسلة مكشوفة في الروابط الحساسة — تُستبدل برموز مشفّرة.
  • الأكاديميات تُفتح بـ slug نصي، مع تحويل تلقائي للرابط الصحيح.
  • كل طلب يتحقق من الملكية على الخادم، لا على الواجهة فقط.

اللغة والاتجاه

اللغة تُحفظ في كوكي، ويتغيّر معها اتجاه الصفحة والخط. أسماء الأكاديميات والكورسات لها حقول عربية وإنجليزية منفصلة.