سعدت بالمشاركة في حملة "كود يخدم القرآن" ضمن العمل على مشروع دليل التطبيقات القرآنية:
https://github.com/Itqan-community/quran-apps-directory/issues/294
وسأشارك هنا توضيحًا حول المشكلة التي عملت عليها، والحل الذي اعتمدته، والسبب في ذلك، ليستفيد باقي المطورين.
المشكلة
البحث في دليل التطبيقات كان يحمّل القائمة ثم يبحث فيها داخل المتصفح. هذا كان يمشي وأعداد التطبيقات قليلة، لكنه لا يصلح مع نمو الدليل.
ما كانش فيه طريقة واضحة يفلتر بيها المستخدم حسب المنصة (آيفون، أندرويد، ويب)، ولا يشارك رابط بحث معيّن ويرجع له لاحقًا. التصنيف كان مربوطًا بمسار الصفحة فقط، والتمرير لتحميل المزيد كان يتعامل مع كل القائمة المحمّلة، مش مع نتائج البحث نفسها.
طريقة الحل الذي اتبعته
- نقلت البحث التقليدي إلى الخادم: المستخدم يكتب، وبعد توقف قصير يُرسل الطلب، وترجع صفحة من النتائج بدل فلترة كل القائمة محليًا.
- خلّيت الرابط يعكس ما يراه المستخدم: نص البحث، التصنيف، المنصة، ورقم الصفحة. لو نسخت الرابط وفتحتُه في متصفح آخر، تظهر نفس النتائج.
- أبقيت شرائح التصنيفات كما هي، ومسارات مثل
/ar/mushaf شغّالة كما كانت.
- أضفت قائمة للمنصة بجانب التصنيفات، بنفس شكل الصفحة.
- عند البحث أو الفلترة تظهر أزرار السابق والتالي، ويتوقف التحميل بالتمرير حتى لا تختلط القائمتان.
- طلبات البحث لا تمس قائمة الصفحة الرئيسية المخزّنة.
- البحث الذكي كما هو، لم ألمسه.
لماذا هذا الحل؟
المستخدم يحتاج يصل لتطبيق مناسب بسرعة: مصحف أو تفسير، وعلى منصته. الخادم أقدر على هذا من قائمة محمّلة في المتصفح. والرابط اللي يعكس الحالة يسهّل المشاركة والرجوع، من غير ما نكسر صفحات التصنيف الموجودة أصلًا.
النتيجة النهائية
- البحث التقليدي يرجع نتائج من الخادم حسب النص والتصنيف والمنصة.
- الصفحة الرئيسية بدون بحث تظل كما يعرفها الناس: تمرير وتحميل المزيد.
- البحث الذكي لم يتأثر.
رابط الـ Pull Request للاطلاع:
https://github.com/Itqan-community/quran-apps-directory/pull/303