«قبل ما أطلع»: تطبيق يتأكد أنك أخذت أغراضك قبل مغادرة أي مكان مؤقت
حالة المشروع: مشروع نُفّذ لعميل واكتمل تسليمه. تطبيق جوال لنظامي Android وiOS، عربي أولًا ويعمل دون إنترنت. نفّذت بايمنتري المشروع كاملًا من تحليل المتطلبات والتصميم إلى البرمجة والاختبار والمراجعة الأمنية وتجهيز مواد المتاجر.
الحاجة التي يعالجها التطبيق
في الفندق أو السيارة المستأجرة أو العيادة أو بيت صديق يوزّع الشخص أغراضه في أماكن متفرقة: الجواز في الخزنة، والشاحن بجانب السرير، والدواء في الثلاجة، وألعاب الأطفال تحت السرير. وعند الخروج، وغالبًا على عجل، يعتمد على ذاكرته؛ فيُنسى شيء، ويعود لأجله، أو يضيع نهائيًا.
طلب العميل تطبيقًا يجيب عن سؤال واحد بيقين خلال ثوانٍ: هل أخذت كل شيء قبل أن أخرج؟ دون حساب ولا إنترنت ولا تتبع للموقع، ودون أن تغادر قائمة الأغراض وأماكنها الجوال.
ما الذي بُني؟
جلسة لكل مكان مؤقت
يبدأ المستخدم جلسة باسم المكان، مثل «فندق جدة» أو «السيارة المستأجرة»، أو من قالب محفوظ. ويُضاف كل غرض بسؤالين فقط: ما هو؟ وأين وضعته؟ مع أماكن سريعة يتعلمها التطبيق من استخدام صاحبه، وصورة اختيارية للمكان.
قائمة مغادرة لا تُغلق وفيها غرض معلّق
عند الضغط على «أنا طالع» تظهر الأغراض مع أماكنها: «تم» لكل غرض استُرجع، أو «تركته عمدًا». لا يمكن إنهاء الجلسة وفيها غرض لم يُحسم، ويُعرض ما تبقى بالاسم، مع تراجع فوري عن أي خطوة.
الفحص الأخير
قبل الإنهاء أسئلة قصيرة مبنية على الأماكن التي استُخدمت فعلًا، مثل «هل الخزنة فارغة؟». بعدها تنتقل الجلسة إلى السجل، ويمكن تكرارها أو حفظها قالبًا للمرة القادمة.
تذكير واحد وواجهة للجميع
تذكير محلي اختياري واحد لكل جلسة قبل الخروج، بنص عام لا يكشف اسم المكان على شاشة القفل. الواجهة عربية من اليمين إلى اليسار بلغة قريبة من المستخدم، مع نسخة إنجليزية كاملة، وأزرار كبيرة، وتصميم يتحمل تكبير الخط إلى الضعف.
الخصوصية والأمان
بدون حساب ولا موقع ولا إعلانات ولا أدوات تحليل ولا سيرفر، ونسخة Android لا تطلب صلاحية الإنترنت أصلًا. تُحفظ القوائم في قاعدة بيانات مشفّرة على الجهاز (SQLite3MultipleCiphers بمخطط SQLCipher 4 وAES-256)، ومفتاحها عشوائي محفوظ في Keychain أو Keystore، والنسخ الاحتياطي التلقائي للنظام معطّل للتطبيق.
النسخ الاحتياطي يدوي فقط: ملف واحد مشفّر بكلمة مرور يختارها المستخدم (AES-256-GCM)، ويُتحقق من الاسترجاع كاملًا في قاعدة مؤقتة قبل استبدال أي بيانات. وقفل اختياري بالرمز أو البصمة يخفي محتوى التطبيق عند التبديل بين التطبيقات. أما الصور فتُحفظ داخل التطبيق بعد حذف بياناتها الوصفية، ومنها إحداثيات الموقع.
البناء التقني
Flutter وبنية قابلة للاختبار
شيفرة واحدة لـAndroid وiOS بـFlutter، وإدارة الحالة بـRiverpod، والتخزين بـDrift فوق SQLite مشفّرة. منطق المنتج معزول عن التخزين والمنصة فيُختبر كاملًا دون جهاز، وكل قرار معماري موثق في سجل قرارات.
اختبارات قبل التسليم
أكثر من 880 اختبارًا آليًا للوحدات والواجهات، و24 اختبار تكامل على جهاز Android تغطي رحلة الاستخدام كاملة بالعربية والإنجليزية، والنسخ الاحتياطي والاسترجاع، والقفل، والتذكيرات، وإعادة التشغيل بعد إغلاق التطبيق قسرًا، والعمل دون شبكة بخط مكبّر.
مراجعة أمنية قبل التسليم
مراجعة أمنية وخصوصية للشيفرة لم تجد ملاحظات حرجة ولا عالية الخطورة. عولجت الملاحظات الست متوسطة الخطورة: خمس أُصلحت في الشيفرة، منها حذف بيانات الموقع من الصور وتوقيت قفل الرمز بساعة لا تتأثر بتغيير وقت الجهاز، وواحدة قُبلت للإصدار الأول مع تعديل نص الخصوصية ليطابق الواقع بدقة. وأُصلحت أيضًا أغلب الملاحظات منخفضة الخطورة.
نظام تصميم وFigma
نظام تصميم بمصدر واحد للقيم من ألوان وخطوط ومسافات، تتطابق معه شيفرة التطبيق ومتغيرات Figma، ويضم أكثر من 25 مكوّنًا بقواعد وصول واضحة: أهداف لمس لا تقل عن 48 نقطة، ولا حالة تعتمد على اللون وحده. صُمّمت الشاشات في Figma بالعربية والإنجليزية في أكثر من 200 إطار، مع نموذج تفاعلي للرحلة الكاملة باللغتين.
مراحل التنفيذ
- تحليل المتطلبات: المهمة الأساسية للمستخدم، والحالات الخاصة، ومعايير القبول.
- نظام التصميم والشاشات والنموذج التفاعلي في Figma.
- بناء التطبيق بطبقات منفصلة واختبارات لكل ميزة.
- التخزين المشفّر والنسخ الاحتياطي والقفل والتذكيرات.
- اختبارات التكامل على جهاز والمراجعة الأمنية وإصلاح ما ظهر فيهما.
- تجهيز التسليم: سياسة الخصوصية بالعربية والإنجليزية، وإجابات نماذج الخصوصية في المتاجر، ونصوص المتجر وصوره.
النتيجة
سُلّم تطبيق مكتمل: نسخة Android مبنية ومختبرة على جهاز، ونسخة iOS من الشيفرة نفسها جاهزة للبناء. يسجّل المستخدم أغراضه وأماكنها في ثوانٍ، وعند الخروج لا تُغلق القائمة حتى يُحسم كل غرض، دون حساب ولا إنترنت، وبياناته لا تغادر جواله.
لديك فكرة تطبيق؟
اشرح المستخدمين والمشكلة التي تريد حلها. يُراجع النطاق والتقنية المناسبة قبل البدء.