وصف مشروع Mutqin Wird
Mutqin Wird هو تطبيق ويب تقدمي (PWA) متكامل لتتبع حفظ القرآن الكريم، يُوزَّع كـ TWA على متجر Google Play. بنيته أحادية الصفحة (SPA)، وكل قراره التقني مُصمَّم حول مسار الحفظ التقليدي: الورد اليومي + المراجعة مع الفقيه.
ما بنيته فعلاً
البنية التقنية
أعدت هيكلة كاملة من ملف quran.html واحد ضخم إلى بنية موزعة: data.js → i18n.js → firebase.js → app.js مع ترتيب تحميل صارم لا يُخالَف
نظام CSS مزدوج: Tailwind مُجمَّع + ملف stylequran.css مخصص كامل
نظام i18n ثنائي اللغة (عربي/إنجليزي) مع RTL تلقائي، أكثر من 1,070 مفتاح ترجمة
قاعدة البيانات والمصادقة
Firebase Auth مع دعم توجيه TWA وحل مشكلة побег scope
Firestore v2: هجرة من مستند مُضمَّن إلى subcollections (logs, revisionSessions, planHistory)
persistentLocalCache للعمل أوفلاين، مع enableNetwork() عند visibilitychange
حل race condition حرجة كانت تسمح لحالة فارغة بالكتابة فوق البيانات الحقيقية
محرك الخطة والحسابات
جدول بحث 928 مدخلة لصفحات المصحف المدني (مطابق لمعيار مجمع الملك فهد) بدلاً من الرياضيات الخطية التقريبية
computeTodayMemTask(): يحسب قطعة الحفظ اليومية بدقة آية بآية
computeTodayRevTask(): يقترح حتى 3 سور للمراجعة بناءً على الأقدمية والجودة
خوارزمية decay-weighted للنقاط الضعيفة: تُدمج الجلسات المنخفضة الجودة + الأخطاء المتكررة + تأخر المراجعة
واجهة المستخدم والتجربة
6 صفحات رئيسية: Dashboard، المراجعة اليومية، المتتبع، الإحصائيات، السور الـ114، الورد اليومي
نظام modal كامل (18+ modal) مع: swipe-to-dismiss، spring physics، haptic feedback، Android back button عبر History API
انتقال صفحات native-feel بتقنية ghost clone
Bottom sheet لكل الـ modals على الجوال، grid ثنائي العمود على سطح المكتب
نظام إشارات بصرية: milestone badges عند 0/15/30/45/60 حزب، streak milestones عند 5/25/50/100 يوم
الميزات الجوهرية
منشئ خطة الحفظ الشخصية (من سورة إلى سورة، اتجاه، صفحات/يوم، تاريخ مستهدف)
فصل تام بين الورد اليومي والمراجعة (مختوم بحقل type)
سجل تاريخ الخطط مع أرشفة في Firestore
presets مراجعة مخصصة
متتبع أخطاء لكل آية مع popover
لوحة إحصائيات: صفحات/604، أيام الرحلة، الأجزاء المكتملة، توزيع الجودة، مخطط الوتيرة
تفاصيل الجزء modal مع سور وصفحات
استيراد/تصدير JSON
نظام تحفيز Hamsat مع تدوير يومي
نمط مظلم كامل
PWA / TWA
Service worker مع حل تطابق cache stale
manifest.json مع maskable icons، background_color وtheme_color موحدَان على #003527
بوابة كشف المتصفح للموبايل (Samsung/Huawei/Xiaomi التي تُخطئ في إبلاغ display-mode)
Digital Asset Links لـ TWA، طلب Play Store production مرتين
الإشعارات
Firebase Cloud Messaging مع Service Worker مخصص
Cloud Functions لإشعارات النقاط الضعيفة اليومية، fan-out للمستخدمين، rate limiting 22 ساعة، تنظيف tokens القديمة، أزرار action ثنائية اللغة
الصفحة التسويقية
wird.mutqinapp.com/index.... مستقلة تماماً عن التطبيق
i18n ثنائي اللغة بـ data-i18n attributes
Canvas fluid blob animation
SEO كامل: canonical، hreflang، JSON-LD (WebSite + SoftwareApplication + FAQPage)
إصلاح "Crawled - currently not indexed" وتسجيل في Google Search Console