نظام نقاط بيع ومبيعات ميدانية لموزّع إلكترونيات، مبني ليواصل البيع حين لا تكون هناك شبكة أصلًا.

- الدورمهندس موبايل وخلفية
- استغرقمستمر
- السنة2026
- بُني بـ
- Flutter
- Dart
- Drift
- Supabase
- PostgreSQL
- Edge Functions
- RLS
- 69سياسة أمان على مستوى الصف
- 38جدولًا
- Offlineيبيع بلا شبكة
ما كان معطّلًا
المندوبون يبيعون من السيارات والمخازن وواجهات المحلات — أماكن الاتصال فيها ليس مضمونًا. ونظام نقاط بيع يتوقف في انتظار الشبكة هو نظام يضيّع البيعة. والمال المتحرك بين الخزائن النقدية والمحافظ والأقساط لا بد أن يتطابق تمامًا في نهاية اليوم على أي حال.
ما فعلته
تطبيق الموبايل يكتب أولًا في قاعدة Drift محلية ويضع كل إجراء في outbox لا يتكرّر أثره، فتكتمل البيعة سواء وُجدت الشبكة أم لا، ولا تُحتسب المزامنة مرتين أبدًا. والخادم هو المرجع: ٣٨ جدولًا و٨٢ دالة و٦٩ سياسة أمان على مستوى الصف تفرض من يرى أي مخزن وأي خزينة وأي عميل — في قاعدة البيانات، لا في الواجهة.
ما تغيّر
البيع لم يعد معلّقًا على الشبكة، واليوم يُغلق بتقرير Z يربط كل فاتورة وتحصيل ومصروف بخزينته. ولأن القواعد تعيش في قاعدة البيانات، فإن إضافة دور جديد صارت صفًّا في جدول الصلاحيات لا إصدارًا جديدًا.
ما بداخله
نقاط بيع تعمل بلا شبكة
البيعة تُكتب في قاعدة محلية أولًا وتنتظر في outbox لا يتكرّر أثره، فلا تُحتسب مرتين مهما تكرّرت المزامنة.
خزائن ويوم عمل
نقدي وفودافون كاش وإنستا وخزائن فرعية، مع فتح يوم العمل وتوريده وإغلاقه بتقرير Z يربط كل حركة بخزينتها.
مخازن وجرد ومشتريات
بضاعة وعملاء ومشتريات وسلف وجرد، مع استيراد من Excel لمن يبدأ بسجل قائم بالفعل.
الصلاحيات في قاعدة البيانات
٦٩ سياسة أمان على مستوى الصف تقرّر من يرى أي مخزن وأي خزينة — الواجهة لا تُخفي البيانات، القاعدة لا تعطيها أصلًا.
تقارير وتدقيق
تقارير شاملة وسجل تدقيق لكل حركة، ونسخ احتياطي تلقائي إلى Google Drive.
موبايل ولوحة ويب من كود واحد
تطبيق المندوب ولوحة الأدمن مبنيان بـFlutter من قاعدة كود واحدة فوق Supabase.

أبو دولة ستوديو
لا تزال تقرأ؟
إذن من الأفضل أن نتحدث. ثلاثون دقيقة، مجانًا، بلا عرض تقديمي. وأسوأ الاحتمالات أن تخرج برأي ثانٍ.