سعدت بالمشاركة في حملة "كود يخدم القرآن" ضمن العمل على مشروع RATQ:
https://github.com/Itqan-community/RATQ/issues/189
وسأشارك هنا توضيحًا حول المشكلة التي عملت عليها، والحل الذي اعتمدته، والسبب في ذلك، ليستفيد باقي المطورين.
المشكلة
بعد إزالة معاينة المستودع الوهمية من صفحات تفاصيل الموارد، بقي بطاقة إحصائيات GitHub فقط (نجوم، تفرعات، قضايا). لم يعد هناك عرض حقيقي لأحدث الالتزامات أو مواضيع المستودع، رغم أن كثيرًا من موارد RATQ مرتبطة بمستودعات فعلية. البيانات الوهمية كانت مضللة للمطورين الذين يقيّمون موردًا قرآنيًا قبل دمجه.
طريقة الحل الذي اتبعته
- جلب البيانات من الواجهة الأمامية (Next.js) من جهة الخادم، وليس من الـ CMS أو الـ backend، لأن البنية الحالية لا تحتوي مهمة دورية لهذا الغرض.
- قبول روابط https://github.com/owner/repo فقط، وإخفاء القسم إن لم يوجد رابط أو لم يكن على github.com.
- طلب أحدث 5 التزامات + المواضيع من GitHub API، مع تخزين مؤقت next: { revalidate: 300 } بنفس أسلوب cms.ts.
- استخدام متغير بيئة للخادم فقط: GITHUB_API_TOKEN، دون تعريضه للعميل.
- إضافة مكوّن جديد بجانب GithubStatsCard دون تعديل البطاقة الحالية، مع نصوص عربية/إنجليزية ودعم RTL.
- عند غياب التوكن أو فشل الطلب: إخفاء المعاينة دون إسقاط الصفحة.
لماذا هذا الحل
البيانات يجب أن تكون حقيقية حتى يثق المطوّر بالمورد. الجلب من الخادم يحمي التوكن، والتخزين المؤقت يقلل ضغط GitHub، والفصل عن بطاقة الإحصائيات يبقي كل قسم لمهمته.
النتيجة النهائية
- صفحة تفاصيل المورد تعرض «معاينة المستودع»: أحدث الالتزامات (الرسالة، المؤلف، التاريخ، الرابط) والمواضيع إن وُجدت.
- إن لم يكن للمورد مستودع GitHub صالح، لا يظهر القسم.
- بطاقة الإحصائيات كما هي.
رابط الـ Pull Request للاطلاع:
https://github.com/Itqan-community/RATQ/pull/221