تفاصيل العمل

وصف مشروع 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

بطاقة العمل