تجربتي مع برمجة تطبيق مكتبي باستخدام تقنية PWA

بعد سنوات من توقفي عن برمجة تطبيقات الديسكتوب جاءني طلب من احد الاقارب برمجة برنامج ديسكتوب لادارة صيدلية ففكرت كثيرا ، هل ارجع لتعلم c# او غيره من لغات خاصة بسطح مكتب واضيع الوقت وصاحب البرنامج مستعجل به وايضا كان طلبه ان يشتغل كتطبيق جوال مستقبلا ..😰
فطرأت ببالي فكرة اخرى وهي بناءه على شكل web app يعني على شكل موقع يشتغل على المتصفح لكن صادفت مشكلة ان استعماله سيكون اصعب وابطء خاصة ان ناس في بلدي ليسوا معتادين على استخدام تطبيقات الويب لادارة متجر او شركة ما ،فهم اعتادوا على برامج عادية بنوافذ و ملف ايقونة تشغيل exe بدون اي تعقيد وانتهى.. ✋
ومرة اخرى فكرت فخطر في بالي framwork الخاص ب js الذي يسمى electronjs وهو مختص في بناء تطبيقات ديسكتوب باستخدام كود javascript 😮..لكن عنده سلبيات..🤦‍♂️
حجمه المهول تخيل قرأت تعليقا على فيديو في يوتوب لمبرمج يقول ان حجم تطبيق hello word هو 40mb 😱..
ولو اطلعت على تطبيق واتس اب المبني ب electronjs الخاصة بديسكتوب في ويندوز لوجدت حجمه حوالي 400 mb ..وهذا لايساعدني في بناء برنامجي وياليت ان المشكلة متوقفة في الحجم بل قرأت عنه انه مستهلك للموارد وقد تبذل جهدا اكبر..😥 في عملية optimization ليصبح ذو حجم واستهلاك للموارد بشكل معقول..
بقي حل اخير ان لم اوفق فيه فساعتذر لصاحب مشروع 😔
وهو بناءه على شكل SPA مع تقنية PWA حيث اعتمدت في backend على laravel لبناء web service وmysql لقاعدة البيانات وsocket لاشعارات المخزون عند انتهاء كمية او انتهاء صلاحية دواء
اما من جهة frontend اشتريتadmin template وخصصتها بما احتاجه و استخدمت vuejs و vuex للstate managment
والحمد لله كانت تجربة جيدة مع اني واجهت بعض المشكلات في تثبيت ادوات المشروع والقيام ب deployment لكافة اطراف مشروع
سبب اختياري لل spa (singal page application وتسمى تطبيق الصفحة الواحدة هو انه اسرع من تطبيق ويب العادي حيث يعتمد على صفحة ثابتة ويتغير محتواها او صفحاتها فقط دون اعداة تحميل reload 😳 استنادا لما تطلبه من web service وصفحات تتغير باستخدام مكتبة routes (استخدمت vue-router) وتتنقل بينها بكل سهولة وبشكل اسرع ..
بقيت خطوة اخيرة جعله يشتغل كبرنامج ديسكتوب وهذا ماتوفره تقنية PWA حيث يسمح لك بتثبيت التطبيق على سطح مكتب كاي برنامج ديسكتوب بايقونة تخصصها في ملف manifest الذي يستخدمه في تثبيت مع اعدادات اخرى ويصبح برنامج جاهز بنافذة مع خواص اضافية كخاصية اشعارات وخاصية offline ويمكن ايضا تثبيته على جوال كغيره من تطبيقات 😮
بعد ذلك طُلب مني ان يتم تشغيله في اكثر من جهاز في شبكة محلية في صيدلية هنا طرأت في بالي فكرتين :
- جعل حاسوب واحد كسرفر لل web service وباقي حواسيب اثبت فيها البرنامج وتستعلم من حاسوب الذي يحتوي web service
- جعل كل شيء في حاسوب سرفر وحيد وباقي اجهزة تتصل معه برابط (مثل فكرة استضافة في ويب او vps )
وبالطبع اعتمدت الطريقة الثانية لانها اكثر كفاءة في صيانة برنامج وعمل تحديثات بدل تحديث في كل جهاز على حدى
هذه خلاصة تجربتي باختصار اتمنى ان تعجبكم 😊
وهذا هو المشروع الذي عملت عليه :

رابط المشروع

 

مقالات ذات صلة