البداية: تطبيق ويب، ومحاولة تغليفه لكل منصة
لم يبدأ Open Mushaf كما هو عليه الآن. البداية كانت تطبيق ويب مبني بـ Next.js، على شكل PWA (Progressive Web App). الفكرة كانت منطقية على الورق: ابنِ تطبيق ويب واحد، ثم غلّفه بـ WebView ليعمل كتطبيق على iOS وأندرويد دون إعادة كتابة أي شيء.
عمليًا، لم يصمد هذا القرار طويلاً.
بعد الاختبار الفعلي، ظهرت المشكلة بوضوح: التطبيق كان ثقيلاً جدًا، واستهلاك البيانات مرتفعًا بشكل غير مقبول لمستخدمين كثيرين منهم من يعتمدون على اتصال إنترنت محدود أو بطيء. WebView لم يكن يمنحني تحكمًا حقيقيًا في الأداء، وكنت أشعر أنني أقاتل ضد القالب بدل أن أبني عليه. تطبيق قرآني يُفترض أن يُفتح بسرعة ويعمل بسلاسة حتى بلا اتصال جيد، وهذا لم يكن يحدث.
نقطة التحول: الانتقال إلى Expo وReact Native
في تلك اللحظة اتخذت القرار الذي غيّر مسار المشروع بالكامل: الهجرة من PWA/WebView إلى React Native عبر Expo.
لم يكن هذا مجرد تغيير تقني سطحي، بل إعادة بناء حقيقية: تحكم فعلي في الأداء، تحميل بيانات أكثر ذكاءً، وتجربة أقرب لتطبيق أصلي حقيقي بدل صفحة ويب مغلّفة. بعد الانتقال، اشتغل التطبيق على الويب وأندرويد بشكل ممتاز. كانت هذه هي النسخة التي استقرت أخيرًا وبدأ الناس يستخدمونها فعليًا دون شكوى من البطء أو استهلاك البيانات.
لكن iOS ظل غائبًا رغم أن قاعدة الكود أصبحت جاهزة تقنيًا للانتقال إليه بفضل React Native.
مبادرة الأثر: الدافع الذي جاء من المجتمع لا من داخلي
هنا جاء الدور الحقيقي لـ مبادرة رمضان الأثر من مجتمع إتقان. بعد إطلاق المبادرة، بدأ يصلني دعم ملحوظ ومساهمات فعلية حول تطبيق Open Mushaf على مجتمع إتقان، وتحديدًا حول غياب نسخة iOS. لم يكن الأمر مجرد تشجيع معنوي، بل ضغطًا إيجابيًا حقيقيًا ومساهمات ملموسة دفعتني لاتخاذ القرار: حان الوقت لشحن نسخة iOS أصلية، وبما أن التطبيق مبني على React Native، لم أكن مضطرًا لإعادة كتابة أي شيء من الصفر، بل فقط لبناء وتهيئة نفس قاعدة الكود لمنصة جديدة.
بدا الأمر في البداية وكأنه سيكون سهلاً نسبيًا، بما أن الويب وأندرويد كانا يعملان بلا مشاكل. لكن الواقع كان مختلفًا تمامًا.
iOS: نفس الكود، لكن مشاكل مختلفة تمامًا
بمجرد الشروع في رفع التطبيق إلى متجر آبل، بدأت تظهر مشاكل لم تكن موجودة إطلاقًا في نسختي الويب وأندرويد، رغم أن الكود المصدري نفسه تمامًا. مشاكل في عملية الرفع نفسها، وملفات إعداد كان يجب ضبطها بدقة أكبر لخصوصية آبل، وصولًا إلى متطلبات إضافية تتعلق بتشغيل الصوت في الخلفية وبعض التفاصيل الشكلية في الصور والامتثال للقوانين الأوروبية.
لكن الرفض الأصعب كان مختلفًا تمامًا: اعتبر أحد المراجعين أن زر "العودة" في التطبيق لا يستجيب، وذلك على جهاز iPad معين تحديدًا. المشكلة لم تظهر عندي على أي جهاز آخر، ولا استطعت إعادة إنتاجها بنفسي، مما جعلها من أصعب المشاكل التي واجهتها
الدرس
القرار الأول، بناء PWA وتغليفه، بدا أسرع طريق في حينه، لكنه اصطدم بواقع الأداء واستهلاك البيانات. القرار الثاني، الانتقال إلى Expo وReact Native، كان القرار الذي أعاد بناء المشروع على أساس صحيح، وجعل الوصول إلى iOS ممكنًا لاحقًا دون إعادة كتابة كل شيء من جديد. أما الدافع لإتمام هذا الانتقال إلى iOS فلم يأتِ مني وحدي، بل من مجتمع رأى قيمة في إيصال المصحف الشريف بروايتي حفص وورش لأكبر عدد ممكن من الأجهزة.
اليوم، Open Mushaf متوفر على iOS وأندرويد والويب، من قاعدة كود واحدة نجت من تجربة أولى فاشلة، وتحولت إلى تجربة ناجحة بفضل قرار تقني صحيح، ودفعة مجتمعية حقيقية.