Zaymy App
تطبيق جوال للقروض الشخصية: سجّل المبلغ، والمدة، والفائدة، والحساب، واحصل على إشعار قبل تاريخ الاستحقاق، وأغلق الدين، وحدّث سمعتك. دون خادم أو تسجيل: تبقى البيانات على الجهاز.
01 / product scope
هذا التطبيق يدور حول الدين، لا حول شاشة محفظة
02 / stack & tags
يكاد كل الكود مكتوبًا بـTypeScript، والبنية واضحة من أول نظرة
Zaymy تطبيق جوال يعمل محليًا بالكامل: تتبع القروض، والمواعيد، والفائدة، وتذكيرات push، والسمعة، والإنجازات، وتهيئة المستخدم، ومستويات مدفوعة عبر RevenueCat.
الأهم هنا ليس نموذج “إقراض / اقتراض”، بل السلوك بعد الحفظ: يُجدول الإشعار، وحذف القرض يُلغي push القديم، ولا تُفقد الحالة عند التحديثات المتزامنة.
03 / release log
تُظهر الإصدارات كيف جرى تنظيم التطبيق تدريجيًا
v1.3
إصلاحات أمنية
يعالج هذا الإصدار خطأين محددين: الوصول المجاني إلى Premium عبر بديل الإنتاج الوهمي، وإشعارات قديمة متبقية بعد حذف القرض.
- أصبحت `purchasePremium()` و`restorePurchases()` في وضع البديل الوهمي تعمل فقط ضمن `__DEV__`.
- بيئة الإنتاج بدون RevenueCat تُرجع الآن خطأ بدلاً من منح وصول مجاني إلى Premium.
- أصبحت `removeLoan()` تُلغي إشعار push المجدول قبل حذف السجل.
v1.2
تنظيف التبعيات والأمان
نظّف هذا الإصدار التبعيات، وأزال خطر إرسال بيانات اعتماد بالخطأ إلى المستودع.
- نُقلت 33 حزمة تشغيل من `devDependencies` إلى `dependencies`.
- استُبدلت بيانات اعتماد Apple في `eas.json` بمتغيرات بيئة.
- أُضيفت شهادات التوقيع، وmobileprovision، وkeystore، ومفاتيح الخدمة إلى `.gitignore`.
v1.1
إصلاح الأخطاء والاستقرار
أول تدقيق كبير للكود: أُصلحت حالات فقدان البيانات، وتعطل الواجهة، وعدة حالات حدّية في التنقل.
- أصبحت `useCallback` تقرأ الحالة الحالية عبر `useRef`، دون فقدان صامت للبيانات.
- أصبحت AsyncStorage تُقرأ عبر تحليل آمن، وتُنقّى المبالغ والسمعة عند التحميل.
- استُبدلت `router.replace` بـ`router.push`، ولم يعد زر “رجوع” يكسر مسار التنقل.
04 / file map
الملفات الرئيسية
05 / next projects