Skip to content

قاعدة بيانات وواجهة برمجة تطبيقات API لتقديم أسئلة لتقيم مستواك في العلوم الشرعية وتطوير حصيلتك العلمية في مجالات متنوعة، جميع الإجابات مصدرها موقع الدرر السنية.

License

Notifications You must be signed in to change notification settings

rn0x/IslamicQuizAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IslamicQuizAPI

مشروع مفتوح المصدر يوفر قاعدة بيانات متعددة التنسيقات تشمل JSON، SQLite، وCSV، إضافةً إلى واجهة برمجة تطبيقات (API) مخصصة لتسهيل استخدام الأسئلة الشرعية في التطبيقات والمشاريع المختلفة.

الأهداف

  • تقييم مستوى المعرفة بالعلوم الشرعية وتطوير الحصيلة العلمية.
  • تقديم الأسئلة في مجالات مختلفة مع دعم الفئات والمواضيع المتنوعة.
  • مرونة الاستخدام حيث يمكن للمطورين اختيار التنسيق الأنسب لمشاريعهم.
  • الاستناد إلى إجابات موثوقة مقتبسة من موقع الدرر السنية.
قاعدة بيانات أسئلة دينية
قاعدة بيانات أسئلة دينية

الفئات


المزايا الرئيسية

  • واجهة API سهلة الاستخدام لعرض الأسئلة، الفئات، والمواضيع.
  • تنسيقات متعددة للبيانات (JSON، SQLite، وCSV) لسهولة التوافق مع التطبيقات المختلفة.
  • تحكم في التصفح والبحث داخل الأسئلة.
  • إمكانية تحديد عدد معين من الأسئلة العشوائية لمزيد من المرونة.
  • حماية وأمان باستخدام Helmet وRate Limiting لتقليل المخاطر.

المتطلبات

  • Node.js (إصدار 18 أو أحدث)
  • Git (في حال التنزيل من المستودع)
  • إدارة الحزم باستخدام npm أو yarn

التهيئة والتثبيت

  1. استنساخ المستودع

    git clone https://github.com/rn0x/IslamicQuizAPI.git
    cd IslamicQuizAPI
  2. تثبيت التبعات

    npm install
  3. إنشاء ملف البيئة (.env)
    أنشئ ملف .env في جذر المشروع وأضف المتغيرات التالية:

    PORT=3000
    BODY_SIZE_LIMIT=10mb
    RATE_LIMIT_WINDOW_MS=3600000  # 1 ساعة
    RATE_LIMIT_MAX=500  # 500 طلب في الساعة
  4. تشغيل المشروع في وضع التطوير

    npm run dev
  5. تشغيل المشروع في الوضع الإنتاجي

    npm start
  6. اختياري: تحويل البيانات
    لتحويل بيانات JSON إلى SQLite وCSV:

    npm run db

تشغيل المشروع باستخدام Docker

يمكنك تشغيل مشروع IslamicQuizAPI داخل حاوية Docker لتبسيط عملية النشر والتوزيع. إليك الخطوات اللازمة لذلك:

المتطلبات المسبقة

قبل البدء، تأكد من أنك قد قمت بتثبيت:

الخطوات لتشغيل المشروع

  1. استنساخ المستودع

    إذا لم تكن قد قمت بذلك بعد، استنساخ المستودع إلى جهازك:

    git clone https://github.com/rn0x/IslamicQuizAPI.git
    cd IslamicQuizAPI
  2. بناء صورة Docker

    قم بإنشاء صورة Docker من ملف Dockerfile الموجود في المشروع:

    docker build -t islamic-quiz-api .
    • -t islamic-quiz-api: هذا هو اسم الصورة التي ستقوم بإنشائها.
  3. تشغيل حاوية Docker

    بعد إنشاء الصورة، قم بتشغيلها باستخدام الأمر التالي:

    docker run -p 3000:5000 islamic-quiz-api
    • -p 3000:5000: يربط المنفذ 3000 على جهازك بالمنفذ 5000 داخل الحاوية.

      الجزء الأول (3000): هذا هو المنفذ على جهازك المضيف (host).

      الجزء الثاني (5000): هذا هو المنفذ الذي يستمع عليه التطبيق داخل الحاوية (container).

    • --env-file .env: يقوم بتحميل المتغيرات البيئية من ملف .env ليتم استخدامها داخل الحاوية.

  4. الوصول إلى واجهة API

    بعد تشغيل الحاوية، يمكنك الوصول إلى واجهة API من خلال المتصفح أو باستخدام أدوات مثل Postman عبر الرابط التالي:

    http://localhost:3000/api
    

ملاحظات

  • تأكد من أن لديك Docker يعمل بشكل صحيح على نظامك قبل اتباع الخطوات.

  • يمكنك التحقق من حالة الحاويات قيد التشغيل باستخدام الأمر:

    docker ps
  • إذا كنت ترغب في إيقاف الحاوية، يمكنك استخدام:

    docker stop <container_id>

    حيث <container_id> هو المعرف الخاص بالحاوية التي ترغب في إيقافها.


أمثلة لاستخدام API

  1. عرض جميع الفئات والمواضيع

    GET /api/categories

    الإستجابة:

    [
     {
         "id": 1,
         "arabicName": "التفسير",
         "englishName": "tafseer",
         "description": "فهم القرآن الكريم ومعرفة مقصوده من أسمى المقاصد, يقول الله تعالى {كِتَابٌ أَنزَلْنَاهُ إِلَيْكَ مُبَارَكٌ لِّيَدَّبَّرُوا آيَاتِهِ وَلِيَتَذَكَّرَ أُولُو الْأَلْبَابِ} ص:29",
         "topics": []
     },
     {
         "id": 2,
         "arabicName": "العقيدة",
         "englishName": "aqeedah",
         "description": "الإيمان بالله وملائكته وكتبه ورسله واليوم الآخر والقدر خيره وشره.",
         "topics": []
     },
     {
         "id": 3,
         "arabicName": "السيرة النبوية",
         "englishName": "sira",
         "description": "دراسة حياة الرسول محمد صلى الله عليه وسلم وأحداث حياته.",
         "topics": []
     }
    ]
    
    • id: معرف الفئة.
    • arabicName: الاسم باللغة العربية.
    • englishName: الاسم باللغة الإنجليزية.
    • description: وصف مختصر للفئة.
    • topics: قائمة المواضيع المرتبطة بهذه الفئة []
  2. عرض جميع الأسئلة بصفحات محددة

    GET /api/questions?page=1&limit=10

    الإستجابة:

    {
      "page": 1,
      "limit": 10,
      "totalQuestions": 5820,
      "totalPages": 582,
      "questions": [
        {
          "id": 1,
          "q": "من أسْماءِ سورةِ الفاتحةِ:",
          "link": "https://dorar.net/tafseer/1#tt1",
          "answers": [
            {
              "answer": "فاتحةُ الكِتابِ",
              "t": 1
            },
            {
              "answer": "أمُّ السوَرِ",
              "t": 0
            },
            {
              "answer": "نورُ الهدايةِ",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 2,
          "q": "ما هي أول سورة نزلت في القرآن؟",
          "link": "https://dorar.net/tafseer/2#tt1",
          "answers": [
            {
              "answer": "العلق",
              "t": 1
            },
            {
              "answer": "الفاتحة",
              "t": 0
            },
            {
              "answer": "البقرة",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "النزول"
        }
        // يمكن إضافة المزيد من الأسئلة هنا
      ]
    }
    • page: رقم الصفحة الحالية.
    • limit: عدد الأسئلة في الصفحة.
    • totalQuestions: إجمالي عدد الأسئلة في قاعدة البيانات.
    • totalPages: إجمالي عدد الصفحات المتاحة.
    • questions: مصفوفة تحتوي على الأسئلة في الصفحة الحالية:
    • id: معرف السؤال.
    • q: نص السؤال.
    • link: رابط للمزيد من التفاصيل حول السؤال.
    • answers: مصفوفة تحتوي على الإجابات المحتملة:
    • answer: نص الإجابة.
    • t: قيمة تشير إلى ما إذا كانت الإجابة صحيحة (1) أو خاطئة (0).
    • category: الفئة التي ينتمي إليها السؤال.
    • topic: الموضوع المرتبط بالسؤال.
  3. عرض مواضيع فئة معينة

    GET /api/categories/1/topics

    الإستجابة:

    [
      {
        "slug": "tahara",
        "name": "الطهارة"
      },
      {
        "slug": "salah",
        "name": "الصلاة"
      },
      {
        "slug": "zakah",
        "name": "الزكاة"
      },
      {
        "slug": "siam",
        "name": "الصيام"
      },
      {
        "slug": "hajj",
        "name": "الحج"
      },
      {
        "slug": "figh-zina",
        "name": "اللباس والزينة"
      },
      {
        "slug": "figh-atema",
        "name": "الأطعمة والأشربة"
      },
      {
        "slug": "figh-said",
        "name": "التذكية والعقيقة والصيد"
      },
      {
        "slug": "figh-nikah",
        "name": "النكاح"
      },
      {
        "slug": "figh-talag",
        "name": "الطلاق"
      },
      {
        "slug": "figh-iela",
        "name": "الخلع والإيلاء"
      },
      {
        "slug": "ridaa",
        "name": "الرضاع والحضانة والنفقات"
      },
      {
        "slug": "idah",
        "name": "اللعان والعدة"
      },
      {
        "slug": "e-nozor",
        "name": "الأيمان والنذور"
      },
      {
        "slug": "wagf",
        "name": "الوقف"
      },
      {
        "slug": "wasaya",
        "name": "الوصايا"
      },
      {
        "slug": "hibat",
        "name": "الهبات"
      }
    ]
    • slug: معرف الموضوع باللغة الإنجليزية، يُستخدم غالبًا في الروابط.
    • name: اسم الموضوع باللغة العربية.
  4. جلب أسئلة عشوائية

    GET /api/questions/random?count=5

    الإستجابة:

    [
      {
        "id": 1,
        "q": "هِبةُ الوَديعةِ لِمَن هي عِندَه",
        "link": "https://www.dorar.net/feqhia/6634",
        "answers": [
          {
            "answer": "لا تَجوزُ",
            "t": 0
          },
          {
            "answer": "تُكرَهُ",
            "t": 0
          },
          {
            "answer": "تَجوزُ",
            "t": 1
          }
        ],
        "category": "الفقه",
        "topic": "الهبات"
      },
      {
        "id": 17,
        "q": "قُرِئَ \"لِلْعَالِمِينَ\" بكسر اللَّامِ في قَولِه تَعالَى: {إِنَّ فِي ذَلِكَ لَآيَاتٍ لِلْعَالِمِينَ} أي:",
        "link": "https://www.dorar.net/tafseer/30/4#tt4",
        "answers": [
          {
            "answer": "عَالمُ الأَرضِ وعَالَمُ السَّماءِ",
            "t": 0
          },
          {
            "answer": "أَحبارُ اليَهُودِ",
            "t": 0
          },
          {
            "answer": "جَمع عالِمٍ",
            "t": 1
          }
        ],
        "category": "التفسير",
        "topic": "الروم"
      },
      {
        "id": 10,
        "q": "معنى قولِه: {نَادِيكُمُ}:",
        "link": "https://dorar.net/tafseer/29/9",
        "answers": [
          {
            "answer": "قَريَتُكم",
            "t": 0
          },
          {
            "answer": "بُستَانُكم",
            "t": 0
          },
          {
            "answer": "مَجلِسُكُم",
            "t": 1
          }
        ],
        "category": "التفسير",
        "topic": "العنكبوت"
      },
      {
        "id": 18,
        "q": "مَن كَذَب على رَسولِ اللهِ ﷺ في تَحليلِ حَرامٍ أو عَكسِه، فهو:",
        "link": "https://www.dorar.net/aqeeda/2939",
        "answers": [
          {
            "answer": "مُنافِقٌ مَعلومُ النِّفاِق",
            "t": 0
          },
          {
            "answer": "مُسلِمٌ مُرتكِبٌ لكَبيرةٍ",
            "t": 0
          },
          {
            "answer": "كافِرٌ خارِجٌ منَ المِلَّةِ",
            "t": 1
          }
        ],
        "category": "العقيدة",
        "topic": "نواقض الإيمان"
      },
      {
        "id": 6,
        "q": "مَعنَى \"زَاغَتْ\" في قَولِه تعالى: {أَمْ زَاغَتْ عَنْهُمُ الْأَبْصَارُ}: ",
        "link": "https://dorar.net/tafseer/38/11",
        "answers": [
          {
            "answer": "عَمِيَت",
            "t": 0
          },
          {
            "answer": "تَعالَت وتَكبَّرَت",
            "t": 0
          },
          {
            "answer": "عدَلتْ ومالَتْ",
            "t": 1
          }
        ],
        "category": "التفسير",
        "topic": "ص"
      }
    ]
    • id: معرف السؤال.
    • q: نص السؤال.
    • link: رابط إلى مزيد من المعلومات حول السؤال.
    • answers: قائمة بالإجابات المحتملة:
    • answer: نص الإجابة.
    • t: تشير إلى ما إذا كانت الإجابة صحيحة (1) أم لا (0).
    • category: الفئة التي ينتمي إليها السؤال.
    • topic: الموضوع المحدد للسؤال.
  5. البحث في الأسئلة عبر النص

    GET /api/search?q=الصلاة

    الإستجابة:

    [
      {
        "id": 5,
        "q": "قُدِّمت الصلاةُ على الزكاةِ في قولِه تَعالَى: {الَّذِينَ يُقِيمُونَ الصَّلَاةَ وَيُؤْتُونَ الزَّكَاةَ}:",
        "link": "https://www.dorar.net/tafseer/31/1",
        "answers": [
          {
            "answer": "لأنَّها أوَّلُ ما فُرِضَ مِن فَرائضِ الإسلامِ",
            "t": 0
          },
          {
            "answer": "لأنَّ الصَّلاةَ نَفعُها لازِمٌ، والزَّكاةَ نفعُها مُتعَدٍّ للغيرِ",
            "t": 0
          },
          {
            "answer": "لأنَّها أحبُّ الأعْمالِ إلى اللهِ تَعالَى ",
            "t": 1
          }
        ],
        "category": "التفسير",
        "topic": "لقمان"
      },
      {
        "id": 20,
        "q": "قال اللهُ تعالَى: {إِنَّمَا تُنْذِرُ الَّذِينَ يَخْشَوْنَ رَبَّهُمْ بِالْغَيْبِ وَأَقَامُوا الصَّلَاةَ} فيه فَضيلةُ الصلاةِ؛ وأنَّها سببٌ لـ:",
        "link": "https://dorar.net/tafseer/35/5",
        "answers": [
          {
            "answer": "مُضاعفَةِ الأَجرِ",
            "t": 0
          },
          {
            "answer": "الكَفِّ عن الشَّهَواتِ",
            "t": 0
          },
          {
            "answer": "الانتفاعِ بإنذارِ النَّبِيِّ صلَّى الله عليه وسلَّم",
            "t": 1
          }
        ],
        "category": "التفسير",
        "topic": "فاطر"
      },
      {
        "id": 19,
        "q": "القَهْقَهةُ (الضَّحِكُ) في الصلاةِ",
        "link": "https://www.dorar.net/feqhia/443",
        "answers": [
          {
            "answer": "لا تَنقُضُ الوُضوءَ، وإنْ كانت تُفسِدُ الصلاةَ",
            "t": 1
          },
          {
            "answer": "تَنقُضُ الوُضوءَ ولا تَنقُضُ الصلاةَ",
            "t": 0
          },
          {
            "answer": "تَنقُضُ الوُضوءَ والصلاةَ",
            "t": 0
          }
        ],
        "category": "الفقه",
        "topic": "الطهارة"
      },
      {
        "id": 8,
        "q": "أصدرَتِ الحكومةُ التركيةُ برئاسةِ مصطفى كمال أتاتورك قرارًا حكوميًّا سنةَ 1353هـ 1934م بتوقُّفِ الصلاةِ في:",
        "link": "https://www.dorar.net/history/?page=255",
        "answers": [
          {
            "answer": "جامعِ الفاتِحِ",
            "t": 0
          },
          {
            "answer": "جامعِ أيوب سُلطان",
            "t": 0
          },
          {
            "answer": "جامِعِ آيا صُوفْيا",
            "t": 1
          }
        ],
        "category": "التاريخ",
        "topic": "التاريخ المعاصر"
      }
    ]
    • id: معرف السؤال.
    • q: نص السؤال.
    • link: رابط إلى مزيد من المعلومات حول السؤال.
    • answers: قائمة بالإجابات المحتملة:
    • answer: نص الإجابة.
    • t: تشير إلى ما إذا كانت الإجابة صحيحة (1) أم لا (0).
    • category: الفئة التي ينتمي إليها السؤال.
    • topic: الموضوع المحدد للسؤال.
  6. عرض جميع الأسئلة لفئة معينة

    GET /api/categories/1/questions?page=1&limit=10

    الإستجابة:

    {
      "page": 1,
      "limit": 10,
      "totalQuestions": 2400,
      "totalPages": 240,
      "questions": [
        {
          "id": 1,
          "q": "من أسْماءِ سورةِ الفاتحةِ:",
          "link": "https://dorar.net/tafseer/1#tt1",
          "answers": [
            {
              "answer": "فاتحةُ الكِتابِ",
              "t": 1
            },
            {
              "answer": "أمُّ السوَرِ",
              "t": 0
            },
            {
              "answer": "نورُ الهدايةِ",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 2,
          "q": "من فَضائلِها",
          "link": "https://dorar.net/tafseer/1#tt1",
          "answers": [
            {
              "answer": "حُصولُ السَّعةُ في الرِّزقِ",
              "t": 0
            },
            {
              "answer": "حُصولُ المناجاةِ في الصَّلاةِ بينَ العَبدِ وربِّه",
              "t": 1
            },
            {
              "answer": "النَّجاةُ من عَذابِ القَبرِ",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 3,
          "q": "من خَصائصِ سورةِ الفاتحةِ",
          "link": "https://dorar.net/tafseer/1#tt1",
          "answers": [
            {
              "answer": "أنَّه لا صَلاةَ لِمَن لم يَقْرأْ بها",
              "t": 1
            },
            {
              "answer": "أنَّها تعصِمُ من فِتنةِ الدجَّالِ",
              "t": 0
            },
            {
              "answer": "أنَّ قِراءَتَها تَفتحُ أَبوابَ الخيرِ",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 4,
          "q": "من فَضائلِ سورةِ الفاتحةِ",
          "link": "https://dorar.net/tafseer/1#tt2",
          "answers": [
            {
              "answer": "أنَّها تُعينُ على قيامِ الليلِ",
              "t": 0
            },
            {
              "answer": "أنَّها رُقْيةٌ شافيةٌ",
              "t": 1
            },
            {
              "answer": "أنَّها تَزيدُ في الرِّزقِ",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 5,
          "q": "معنى الربِّ هو:",
          "link": "https://www.dorar.net/tafseer/1/1#tt7",
          "answers": [
            {
              "answer": "المُستحِقُّ للحَمدِ",
              "t": 0
            },
            {
              "answer": "الذي لا يُعبَدُ سِواهُ",
              "t": 0
            },
            {
              "answer": "السيِّدُ، والمالِكُ، والمصلِحُ، والصَّاحبُ، والمُرَبِّي، والخالِقُ",
              "t": 1
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 6,
          "q": "المقصودُ بالضَّالِّينَ في قولِه تعالى: {غَيْرِ الْمَغْضُوبِ عَلَيْهِمْ وَلَا الضَّالِّينَ} هُم:",
          "link": "https://www.dorar.net/tafseer/1/1#tt4",
          "answers": [
            {
              "answer": "المرتَدُّونَ الذين آمنُوا ثم كَفرُوا فطَبعَ اللهُ على قُلوبِهم",
              "t": 0
            },
            {
              "answer": "النَّصارى ومَن سلَك طريقتَهم ممَّن جهِلوا الحقَّ، فعبَدوا اللهَ تعالى بغَيرِ عِلمٍ",
              "t": 1
            },
            {
              "answer": "الذين قال الله فيهم: {الَّذِينَ ضَلَّ سَعْيُهُمْ فِي الْحَيَاةِ الدُّنْيَا وَهُمْ يَحْسَبُونَ أَنَّهُمْ يُحْسِنُونَ صُنْعًا}",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 7,
          "q": "مِن صِفاتِ الذينَ أنعَمَ اللهُ تعالى عليهمُ المذكورةِ في سورةِ الفاتحةِ:",
          "link": "https://dorar.net/tafseer/1/1#tt7",
          "answers": [
            {
              "answer": "أنَّهم لَيسوا كاليَهودِ",
              "t": 1
            },
            {
              "answer": "أنَّهم منَ الصَّابِرينَ",
              "t": 0
            },
            {
              "answer": "أنَّهم لَيسوا منَ المنافِقينَ",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 8,
          "q": "الرَّحْمَنِ الرَّحِيمِ:",
          "link": "https://www.dorar.net/tafseer/1/1#tt4",
          "answers": [
            {
              "answer": "اسْمانِ مُشتَقَّانِ منَ الرَّحمةِ على وَجهِ المُبالَغةِ، والرَحيمٌ أشَدُّ مُبالَغةً من الرَحمنَ",
              "t": 0
            },
            {
              "answer": "اسْمانِ مُشتَقَّانِ منَ الرَّحمةِ على وَجهِ المُبالَغةِ، والرَحمنُ تدُلُّ على الرَحيمٍ، دونَ فَرقٍ بَينَهما",
              "t": 0
            },
            {
              "answer": "اسْمانِ مُشتَقَّانِ منَ الرَّحمةِ على وَجهِ المُبالَغةِ، والرَحمنُ أشدُّ مُبالَغةً من الرَحيمٍ",
              "t": 1
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 9,
          "q": "معنى: {مَالِكِ يَوْمِ الدِّينِ}",
          "link": "https://dorar.net/tafseer/1/1#tt4",
          "answers": [
            {
              "answer": "المتصرِّفُ في جميعِ خلْقِه بالفِعلِ فقطْ",
              "t": 0
            },
            {
              "answer": "المتصرِّفُ في جميعِ خلْقِه بالقَولِ فقطْ",
              "t": 0
            },
            {
              "answer": "المتصرِّفُ في جميعِ خلْقِه بالقَولِ والفِعلِ",
              "t": 1
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        },
        {
          "id": 10,
          "q": "في قولُه صلَّى اللهُ عليه وسلَّمَ: \"وما يُدْريكَ أنَّها رُقْيةٌ؟\" يُقصَدُ بها:",
          "link": "https://dorar.net/tafseer/1#tt1",
          "answers": [
            {
              "answer": "المعوِّذتان",
              "t": 0
            },
            {
              "answer": "سورةُ الفاتحة",
              "t": 1
            },
            {
              "answer": "سورةُ الإخْلاص",
              "t": 0
            }
          ],
          "category": "التفسير",
          "topic": "الفاتحة"
        }
      ]
    }
    • page: رقم الصفحة الحالية.
    • limit: عدد الأسئلة في الصفحة.
    • totalQuestions: إجمالي عدد الأسئلة.
    • totalPages: إجمالي عدد الصفحات.
    • questions: قائمة الأسئلة:
    • id: معرف السؤال.
    • q: نص السؤال.
    • link: رابط لمزيد من المعلومات حول السؤال.
    • answers: قائمة بالإجابات المحتملة:
    • answer: نص الإجابة.
    • t: تشير إلى ما إذا كانت الإجابة صحيحة (1) أم لا (0).
    • category: الفئة التي ينتمي إليها السؤال.
    • topic: الموضوع المحدد للسؤال.
  7. عرض جميع الأسئلة لموضوع معين

    GET /api/categories/1/topics/some-topic/questions

    الإستجابة:

    [
      {
        "id": 1,
        "q": "من أسْماءِ سورةِ الفاتحةِ:",
        "link": "https://dorar.net/tafseer/1#tt1",
        "answers": [
          {
            "answer": "فاتحةُ الكِتابِ",
            "t": 1
          },
          {
            "answer": "أمُّ السوَرِ",
            "t": 0
          },
          {
            "answer": "نورُ الهدايةِ",
            "t": 0
          }
        ],
        "category": "التفسير",
        "topic": "الفاتحة"
      },
      {
        "id": 2,
        "q": "من فَضائلِها",
        "link": "https://dorar.net/tafseer/1#tt1",
        "answers": [
          {
            "answer": "حُصولُ السَّعةُ في الرِّزقِ",
            "t": 0
          },
          {
            "answer": "حُصولُ المناجاةِ في الصَّلاةِ بينَ العَبدِ وربِّه",
            "t": 1
          },
          {
            "answer": "النَّجاةُ من عَذابِ القَبرِ",
            "t": 0
          }
        ],
        "category": "التفسير",
        "topic": "الفاتحة"
      },
      {
        "id": 3,
        "q": "من خَصائصِ سورةِ الفاتحةِ",
        "link": "https://dorar.net/tafseer/1#tt1",
        "answers": [
          {
            "answer": "أنَّه لا صَلاةَ لِمَن لم يَقْرأْ بها",
            "t": 1
          },
          {
            "answer": "أنَّها تعصِمُ من فِتنةِ الدجَّالِ",
            "t": 0
          },
          {
            "answer": "أنَّ قِراءَتَها تَفتحُ أَبوابَ الخيرِ",
            "t": 0
          }
        ],
        "category": "التفسير",
        "topic": "الفاتحة"
      }
    ]
    • id: معرف السؤال.
    • q: نص السؤال.
    • link: رابط لمزيد من المعلومات حول السؤال.
    • answers: قائمة بالإجابات المحتملة:
    • answer: نص الإجابة.
    • t: تشير إلى ما إذا كانت الإجابة صحيحة (1) أم لا (0).
    • category: الفئة التي ينتمي إليها السؤال.
    • topic: الموضوع المحدد للسؤال.

هيكلية الملفات والمجلدات

IslamicQuizAPI/
│
├── database/               # يحتوي على ملفات JSON SQLITE C
│
├── src/                    # مجلد المصدر الرئيسي
│   ├── routes/             # يحتوي على تعريف المسارات والوظائف
│   │   └── quizRoutes.mjs
│   ├── logger.mjs          # ملف تسجيل الأخطاء والعمليات
│   └── index.mjs           # ملف الدخول الرئيسي للتطبيق
│
├── unused/                 # يحتوي على سكربتات وملفات غير مستخدمة
│
├── .env                    # ملف إعداد المتغيرات البيئية
├── package.json            # تعريف المشروع والتبعيات
└── README.md               # التوثيق

التبعيات

  • Express: لإنشاء السيرفر.
  • Helmet: لتعزيز أمان التطبيق.
  • Rate Limiting: لتحديد عدد الطلبات لكل IP.
  • CORS: للسماح بالوصول عبر مصادر متعددة.
  • fs-extra: للتعامل مع ملفات JSON.
  • dotenv: لتحميل المتغيرات البيئية.
  • better-sqlite3: لتحويل البيانات إلى SQLite.
  • json2csv: لتحويل البيانات إلى CSV.

المساهمة في المشروع

  1. قم بعمل Fork من المشروع.
  2. أنشئ فرعًا جديدًا باستخدام:
    git checkout -b feature/new-feature
  3. أضف تعديلاتك وقدم طلب سحب (Pull Request).

رخصة الاستخدام

هذا المشروع مرخص تحت رخصة MIT، مما يسمح بالاستخدام المفتوح والتعديل بحرية.


المستودع

رابط المشروع على GitHub:
IslamicQuizAPI - GitHub


تحميل القاعدة

dorar.net | جميع البيانات ماخوذه من موقع معلمة الدرر

لا تنسنا من دعوة صالحة بظهر الغيب 🤲

About

قاعدة بيانات وواجهة برمجة تطبيقات API لتقديم أسئلة لتقيم مستواك في العلوم الشرعية وتطوير حصيلتك العلمية في مجالات متنوعة، جميع الإجابات مصدرها موقع الدرر السنية.

Topics

Resources

License

Stars

Watchers

Forks