المدونةنُشر في

لوحة التحكم التي تدير التطبيق

من يدير العمل لا يعيش داخل تطبيق المستخدم. يحتاج لوحة ويب على نفس البيانات — أشخاص، ومحتوى، وحجوزات، وصلاحيات — وإلا فشاشات الجوال لا تنجز عملًا.

  • لوحة تحكم
  • خلفية
  • React
شاشة طافية وورقة على مكتب بخط تركواز.

لوحة التحكم هي الموقع اللي يدير منه شغله: المستخدمين، المحتوى، الحجوزات، العروض، الصلاحيات، الدفعات — على نفس بيانات التطبيق. شاشات الجوال جزء من المنتج فقط. إذا التاجر ما يقدر ينزل عرض، أو العيادة ما تشوف قائمة بكرة، أو المدرّب ما يسجّل دفعة، شاشات الجوال ما تهم.

عندنا تطبيق المستخدم بـ Flutter أو Swift، واللوحة بـ React، والاثنان على مشروع Supabase نفسه. هذي مو قالب. هذا هو الجزء الثاني من المنتج.

وش هي اللوحة — ووش مو هي

موقع بصلاحيات، على نفس صفوف الجوال. مو ووردبريس. ووردبريس للصفحات. هذي لشغل يومي. مو لوحة أرقام. الرسوم للي يراقب. اللوحة للي يشتغل. مو فورم مولّد فوق كل جدول. مو «تبويب أدمن» جوا تطبيق الزبون.

لماذا يحتاج التطبيق الحقيقي إلى لوحة

الآلة الحاسبة لا تحتاج لوحة. أي شيء فيه أشخاص أو محتوى أو حجوزات أو عروض أو أموال يحتاجها. تاجر لا يستطيع إخفاء فرع مغلق، فيتصل به الزبائن. عيادة تدير يومها على واتساب، ولم تتجاوزه بعد. مدرّب يرسل ملف إكسل للدفعات، وهذه لوحة أصلًا، لكن بشكل سيئ.

السؤال ليس «هل نحتاج لوحة؟». السؤال هو الاختبار أعلاه. إذا كان الجواب قائمة، فهذي هي النطاق.

اللوحة والتطبيق منتج واحد

قاعدة واحدة، وجهتان. الخلفية (الخادم وقاعدة البيانات) ليست سيرفرًا ثانيًا للوحة؛ هي Postgres ودخول وتخزين. الجوال واللوحة يعملان عليها. تاجر T-CODE ينشر عرضًا، فيراه المتسوق على الخريطة. عيادة Naqrah تضع موعدًا، فيراه المريض في التطبيق. لا توجد مزامنة. صف واحد.

  • تاجر T-CODE — فروع وعروض وأكواد استرداد. المتسوق يرى العروض القريبة على خريطة.
  • عيادة Naqrah — المواعيد في مكان واحد. المريض يحجز أو يؤجّل بعدد قليل من اللمسات.
  • مدرّب Oxygen — دورات واختبارات وطلاب ودفعات. الطالب يذاكر داخل الدورة.
  • مورّد WOSTA — عروض وفواتير ومستودع أو فرع. المشتري يقارن.

هذي منتجات شغّالة. اقرأها: T-CODE، Naqrah.app، Oxygen Academy، WOSTA. لا توجد نسب مخترعة، ولا أعداد مستخدمين مخترعة. حجز العيادة وشراء المستلزمات منتجان، لا قطاع واحد — التفصيل في مقالة مستقلة. العروض المحلّية كوجه متسوّق ووجه تاجر في مقالة ثانية.

كيف نبنيها

القاعدة تُصمَّم مرة واحدة. Flutter أو Swift لتطبيق الزبون. React للوحة. مشروع Supabase واحد يجمعهم. تُصمَّم اللوحة جنب شاشات التطبيق، لا ترقيعًا بعد الإطلاق. الصلاحيات في البيانات من أول أسبوع — في مكان يتحكم فيه السيرفر، لا حقل يعدّله المستخدم. وعند التسليم، المشروع والدخول لك.

وإذا كان عميلك عيادة أو محلًا أو مورّدًا، فاللوحة أيضًا تخدم أكثر من جهة. صاحب المنصة ومدير العيادة ليسا بنفس الدخول.

صلاحيات، مو أدمن واحد

اللوحة الصحيحة ليست حسابًا واحدًا فوق الكل. مالك، وتاجر، وموظف فرع، ومراجع — لكل واحد أفعال يقوم بها وأفعال لا يقوم بها. عيادة لا ترى مواعيد عيادة أخرى. موظف الاستقبال لا يغيّر الأسعار. المراجع الحكومي يمكن أن يقرأ سنة مقفلة فقط.

الصلاحية تكون في قاعدة البيانات. إخفاء زر في React ليس حماية. من يملك المفتاح العام يستطيع استدعاء الـ API. ما يمنع ذلك هو قوانين الصف في القاعدة. نفس القوانين تُطبَّق على توكن الجوال وتوكن اللوحة. مفتاح service role يتجاوزها، ومكانه سيرفر تثق فيه. لا يُدرج في المتصفح ولا في التطبيق ولا في السجلات ولا في لقطات الشاشة.

CareerFolio يقفل سنة أداء انتهت، فتصبح للقراءة فقط، ويشاركها برابط. هذي صلاحية في البيانات، مو عنصر قائمة.

شغل الأسبوع

المحتوى: تنشر عرضًا أو تخفيه، ودورة، وملف عيادة، وفرعًا. التشغيل: تسترد كودًا، وتنقل موعدًا، وتقبل عرضًا، وتصدر فاتورة، وتسجّل دفعة. هذي لوحة الشغل. الرسوم البيانية تأتي لاحقًا، إن أتت.

في أفعال خطرة: حذف مستخدم، واسترداد مبلغ، وتغيير صلاحية، وفتح أرشيف، وتصدير بيانات أشخاص. هذي تحتاج إلى تأكيد، وسبب، وسطر يوضح من نفّذها ومتى. لوحة لا تستطيع أن تقول من غيّر هذا ومتى، فهذي لم تكتمل بعد. التصدير كمشكلة منتج في مقالة PDPL.

وش نبني أول — ووش نرفض

أول شيء: دخول، وصلاحيات، والإجراءات الأكثر تكرارًا كل أسبوع، وبحث في هذه السجلات، وسطر للأموال والهوية. بعدين: رسوم بيانية، وتوقعات، ونظام تذاكر. لوحة جوال فخمة مو أول شيء. من يشغّل اللوحة يجلس على مكتب.

  • ما نسوي واجهة لقاعدة البيانات ونسمّيها منتجًا.
  • ما نسوي دخولًا واحدًا يفعل كل شيء.
  • ما نقول «نضيف اللوحة بعد أن نطلق على App Store».

أخطاء نشوفها كثير

  • نُطلق تطبيق الزبون بدون لوحة.
  • نتعامل مع اللوحة كقالب ووردبريس.
  • رسوم بيانية قبل الشغل اليومي.
  • الصلاحيات في راوتر React فقط.
  • قاعدة بيانات ثانية «خاصة باللوحة».

اللوحة مو مرحلة ثانية

هي طريقة سير العمل يوم يُطلق التطبيق. إذا كنت تحدد نطاق تطبيق جوال، واللوحة مجرد سلايد في الآخر، فالنطاق ناقص. اكتب لنا، ومعك من يدير العمل يوميًا، لا شاشات المتجر وحدها.

أخبرنا عن مشروعك.

اكتب لنا وش تبي تبني. يرد عليك من سينفّذ الشغل.

تواصل معنا