مهم
؟ Meshtastic Network Management Client يحتاج إلى مالك / نصيلة جديدة؟
مزيد من التفاصيل متوفرة في العدد رقم 473.
هذا التطبيق هو عميل سطح المكتب لمشروع Meshtastic ، مصمم للسماح للمستخدمين بإدارة شبكات الشبكات الكبيرة غير المركزية بشكل موثوق. حاليًا يتمتع النظام الإيكولوجي العميل Meshtastic بدعم قوي لإدارة العقد الفردية ، ولكن الدعم الأدنى لإدارة وتحليل مستوى الشبكة. الهدف من هذا المشروع هو منح المستخدمين ثقة في شبكاتهم meshtastic كبنية تحتية موثوقة للاتصالات من خلال تحليل خوارزمي جديد ورؤى على مستوى الاتصال.

تم تصميم هذا التطبيق باستخدام Tauri Framework ، وهو خليفة حديث وآمن لإطار الإلكترون. يتيح لنا ذلك دعم Linux و MacOS و Windows أصلاً داخل قاعدة الكود نفسها دون أداء أو ذاكرة المتصفح الكروم. تتم كتابة البنية التحتية للتطبيق الأساسية الخاصة بنا في الصدأ بسبب أدائها وسلامتها ، وتتم كتابة وظائف واجهة المستخدم والعميل الخاصة بنا في React TypeScript باستخدام Vite. هذا المشروع في المراحل المبكرة من التطوير ، وبالتالي فإنه ليس مناسبًا لاستخدام الإنتاج بعد .
في وقت كتابة هذا التقرير ، يتم الحفاظ على هذا المشروع حاليًا بواسطة مطور واحد. على هذا النحو ، يبحث المشروع عن مطورين على استعداد للمساهمة في المبادرات الرئيسية التالية أو أخذها في المبادرات الرئيسية التالية:
لا يزال هذا المشروع في المراحل المبكرة من التطوير ، ولكن إليك خريطة طريق خشنة من الوظائف التي نعمل عليها. نحن نضع أولوية عالية في الحصول على البنية التحتية الأساسية لدينا ، لأن هذا هو جوهر أي طبقة واجهة المستخدم القوية والفعالة.
تم تصميم هذا المشروع على النظام البيئي للأجهزة meshtastic ، وبالتالي يتطلب هذا العميل أن تتمكن من الوصول إلى راديو meshtastic. قد يتغير هذا في المستقبل ، ولكن في الوقت الحالي ، يلزم استخدام الراديو المادي لاستخدام هذا العميل.
لقد كتبت بعض توصيات الأجهزة الشخصية هنا.
تم تصميم هذا المشروع في Rust و React TypeScript ، ويتم إدارته باستخدام مدير حزمة PNPM. على هذا النحو ، يتطلب هذا المشروع تثبيت البرامج التالية على جهاز التطوير الخاص بك:
لتشغيل هذا المشروع محليًا ، اتبع الخطوات أدناه:
git clone https://github.com/meshtastic/network-management-client.gitgit submodule update --initpnpm ipnpm run rust:dev . يجب أن يجمع التطبيق بنجاح ، ويجب أن ترى التطبيق مفتوحًا بنجاح. إذا فشلت هذه العملية بالنسبة لك ، فيرجى إخبارنا!بينما يمكن تطوير هذا المشروع في أي محرر نصوص ، نوصي بمحرر رمز Visual Studio. إذا كنت تستخدم VSCODE ، فإننا نوصي بشدة بتثبيت ملحقات رمز Visual Studio التالية. هذه الامتدادات تفرض نمط الكود وتمكين اللغة والإطار الدعم لمكدس التكنولوجيا لدينا.
بعض الامتدادات الاختيارية غير المطلوبة ولكننا نجد مفيدة للغاية:
لتوحيد تدفق التطوير الخاص بنا ، نستخدم أوامر PNPM ، المحددة في package.json . يمكن تشغيل هذه الأوامر باستخدام pnpm run NAME ...ARGS . يتم تقسيم أوامرنا إلى فئتين أساسيتين ، rust:* الأوامر و ui:* الأوامر. تقوم أوامر rust:* بتشغيل تطبيق سطح المكتب بالكامل ، حيث تقوم أوامر ui:* فقط بتشغيل طبقة واجهة المستخدم.
ملاحظة: نوصي بشدة بعدم استخدام
ui:devوui:buildالأوامر يدويًا. يتم استدعاء هذه الأوامر داخليًا بواسطةrust:devandrust:build، على التوالي. لن تكون قادرًا على الاتصال بـ Devce المسلسل عند تشغيل أمر واجهةui:dev، حيث لا يتم التعامل مع هذا المنطق في طبقة واجهة المستخدم.
نعمل حاليًا على إضافة دعم لإطار القصة ، والذي سيسمح للمساهمين بتطوير مكونات واجهة المستخدم دون تشغيل تطبيق سطح المكتب بأكمله.
pnpm run rust:dev - يبدأ تطبيق سطح المكتب في وضع التطوير ، مما يسمح بإعادة تحميل واجهة المستخدم الساخنة ورمز الصدأ
pnpm run rust:build - يقوم بإنشاء تطبيق سطح المكتب في وضع الإنتاج لهندسة النظام الخاصة بك. حاليًا نستخدم هذا الأمر فقط لاختبار محلل CLI Piscition الخاص بطلبنا.
pnpm run rust:test - يقوم بتشغيل اختبارات الواجهة الخلفية على دليل قاعدة كود الصدأ ( /src-tauri ). يقوم هذا الأمر أيضًا بإنشاء روابط عميل TyperScript في دليل /src-tauri/bindings . أضف -- --show-output لإظهار صدأ println! مكالمات الماكرو داخل أجنحة الاختبار.
pnpm run ui:dev - يبدأ خادم تطوير واجهة المستخدم ، مما يسمح بتطوير واجهة المستخدم في بيئة المتصفح. لاحظ أن أي رمز يتفاعل مع الواجهة الخلفية للصدأ لن يعمل ضمن بيئة المتصفح هذه ، مما يعني أنك لن تتمكن من الاتصال بالأجهزة التسلسلية في هذا السياق
pnpm run ui:build : - يقوم بتشغيل بناء على رمز واجهة المستخدم في dist Directory
pnpm run ui:lint - يستخدم ESLINT للتحقق من أخطاء نمط الكود. لاحظ أن خط أنابيب CI الخاص بنا يتطلب أن ينجح هذا الأمر قبل دمج أي تغييرات
pnpm run ui:format - تنسيقات قاعدة بيانات واجهة المستخدم باستخدام أجمل و ESLINT. نوصي بشدة بتشغيل هذا قبل إنشاء العلاقات العامة!
pnpm run ui:test - يعمل مجموعة اختبار واجهة المستخدم باستخدام Jest. في الوقت الحالي ، لا يحتوي المشروع على مجموعة اختبار واجهة المستخدم ، لكننا منفتحون جدًا على المساهمات!
(تم إهمالها)pnpm run ui:preview - يقوم بتشغيل واجهة المستخدم المبنية من dist Directory. يجب تشغيل هذا الأمر بعد ui:build
ملاحظة: على Linux ، قد لا يكون لدى المستخدم إذن للوصول إلى منفذ تسلسلي معين. إذا حدث هذا ، فمن المحتمل أن تحتاج إلى إضافة المستخدم إلى المجموعة التي تتحكم في المنفذ التسلسلي الذي تريد الوصول إليه. يمكنك العثور على المجموعة التي تتحكم في منفذ تسلسلي عبر أمر
ls -ld PATH_TO_PORT_HERE. يمكنك إضافة المستخدم الخاص بك إلى هذه المجموعة عبر أمرusermod -a -G GROUP_NAME_HERE $USER.
نظرًا لأننا ما زلنا في وقت مبكر جدًا من التنمية ، ليس لدينا بعد إطار عمل موحد لقبول المساهمات. هذا ما يقال ، نحن منفتحون جدا على الاقتراحات و/أو تغييرات الكود! إذا كنت مهتمًا بالمساهمة في هذا المستودع ، فسوف نطلب منك أولاً التحقق من لوحة المشكلات الخاصة بنا للتأكد من أن عملك لا يكرر عمل الآخرين. بعد ذلك ، يرجى توضيح مشكلة في مجلس إدارتنا حتى نعرف ما الذي تهتم به. إذا كان لديك أي أسئلة حول المشروع ، نود أن نسمع منك!