| # دليل المساهمة في نظام Auto-Guardian | |
| شكرًا لاهتمامك بالمساهمة في تطوير نظام Auto-Guardian! نرحب بجميع المساهمات التي تساعد في تحسين هذا المشروع مفتوح المصدر. | |
| ## فهرس المحتوى | |
| 1. [كيفية المساهمة](#كيفية-المساهمة) | |
| 2. [إعداد بيئة التطوير](#إعداد-بيئة-التطوير) | |
| 3. [قواعد كتابة الكود](#قواعد-كتابة-الكود) | |
| 4. [عملية تقديم Pull Request](#عملية-تقديم-pull-request) | |
| 5. [إرشادات الأمان](#إرشادات-الأمان) | |
| 6. [التواصل والدعم](#التواصل-والدعم) | |
| ## كيفية المساهمة | |
| هناك عدة طرق للمساهمة في تطوير النظام: | |
| - **الإبلاغ عن الأخطاء**: إذا وجدت خطأ في النظام، يُرجى فتح Issue جديدة مع وصف مفصل للمشكلة وكيفية إعادة إنتاجها. | |
| - **اقتراح الميزات**: نرحب باقتراحاتك لتحسين النظام. يُرجى فتح Issue جديدة في قسم Feature Requests. | |
| - **تحسين الوثائق**: إذا وجدت أي أخطاء في الوثائق أو أردت تحسينها، يُرجى تقديم مساهمتك. | |
| - **كتابة الكود**: يمكنك حل أي Issue مفتوح وتقديم Pull Request. | |
| - **مراجعة الكود**: ساعد في مراجعة Pull Requests الأخرى وتقديم ملاحظات بنّاءة. | |
| ## إعداد بيئة التطوير | |
| ### المتطلبات الأساسية | |
| قبل البدء، تأكد من تثبيت المتطلبات التالية: | |
| ``` | |
| Python >= 3.11 | |
| Node.js >= 20 | |
| Go >= 1.21 | |
| Rust (أحدث إصدار ثابت) | |
| Git | |
| ``` | |
| ### خطوات الإعداد | |
| 1. **استنساخ المستودع**: | |
| ```bash | |
| git clone https://github.com/yourusername/auto-guardian.git | |
| cd auto-guardian | |
| ``` | |
| 2. **تثبيت تبعيات Python**: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 3. **تثبيت تبعيات Node.js**: | |
| ```bash | |
| npm install | |
| ``` | |
| 4. **تشغيل الفحوصات محليًا**: | |
| ```bash | |
| # فحص Python | |
| bandit -r scripts/ | |
| pylint scripts/ | |
| # فحص JavaScript | |
| npx eslint . | |
| # فحص Go | |
| gosec ./... | |
| ``` | |
| ## قواعد كتابة الكود | |
| ### معايير كود Python | |
| - اتبع أسلوب PEP 8 لكتابة الكود. | |
| - استخدم أسماء متغيرات واضحة ومعبرة. | |
| - أضف docstrings لجميع الدوال والكلاسات. | |
| - استخدم type hints حيثما أمكن. | |
| - احتفظ بطول السطر أقل من 120 حرفًا. | |
| ### معايير كود JavaScript/TypeScript | |
| - اتبع معايير ESLint المعرفة في `.eslintrc.json`. | |
| - استخدم `const` و `let` بدلاً من `var`. | |
| - استخدم arrow functions حيثما أمكن. | |
| - أضف أنواع TypeScript لجميع الدوال والمتغيرات. | |
| ### معايير كود Go | |
| - اتبع معايير Go الرسمية. | |
| - استخدم `gofmt` لتنسيق الكود. | |
| - أضف توثيق لجميع الدوال العامة. | |
| - استخدم go vet للفحص. | |
| ### معايير كود Rust | |
| - اتبع معايير Rust الرسمية. | |
| - استخدم `cargo fmt` لتنسيق الكود. | |
| - أضف توثيق للدوال العامة. | |
| - تحقق من السلامة مع `cargo clippy`. | |
| ## عملية تقديم Pull Request | |
| ### الخطوة 1: إنشاء Fork | |
| انتقل إلى صفحة المستودع على GitHub وأنشئ Fork الخاص بك. | |
| ### الخطوة 2: إنشاء فرع جديد | |
| ```bash | |
| git checkout -b feature/your-feature-name | |
| ``` | |
| ### الخطوة 3: إجراء التغييرات | |
| قم بإجراء التغييرات المطلوبة على الكود أو الوثائق. | |
| ### الخطوة 4: اختبار التغييرات | |
| ```bash | |
| # تشغيل جميع الفحوصات | |
| python -m pytest | |
| npm test | |
| ``` | |
| ### الخطوة 5: إنشاء Commit | |
| ```bash | |
| git add . | |
| git commit -m "إضافة: وصف موجز للتغييرات" | |
| ``` | |
| ### الخطوة 6: رفع الفرع | |
| ```bash | |
| git push origin feature/your-feature-name | |
| ``` | |
| ### الخطوة 7: إنشاء Pull Request | |
| انتقل إلى صفحة GitHub وأنشئ Pull Request جديدًا. تأكد من: | |
| - وصف التغييرات بشكل واضح. | |
| - ربط أي Issue ذي صلة. | |
| - إرفاق لقطات شاشة إذا كانت التغييرات مرئية. | |
| - اجتياز جميع الفحوصات الآلية. | |
| ## إرشادات الأمان | |
| ### الإبلاغ عن الثغرات الأمنية | |
| إذا اكتشفت ثغرة أمنية في النظام، يُرجى عدم فتح Issue علني. بدلاً من ذلك: | |
| 1. أرسل بريدًا إلكترونيًا إلى: security@example.com | |
| 2. وصف الثغرة بتفصيل. | |
| 3. أخبرنا إذا كنت تريد أن يتم الإشارة إليك في شكر المساهمين. | |
| ### أفضل الممارسات الأمنية | |
| - لا تقم أبدًا بتنفيذ كود غير موثوق. | |
| - تحقق من جميع المدخلات قبل معالجتها. | |
| - استخدم HTTPS للاتصالات الآمنة. | |
| - لا تخزن بيانات حساسة في الكود. | |
| ## التواصل والدعم | |
| ### الحصول على المساعدة | |
| - **الأسئلة الشائعة**: راجع قسم FAQ في الوثائق. | |
| - **المجتمع**: انضم إلى Discord server الخاص بالمشروع. | |
| - **الدعم**: افتح Issue مع تصنيف "question". | |
| ### ساعات العمل | |
| نحاول الرد على جميع الاستفسارات خلال 48 ساعة عمل. | |
| --- | |
| ## شكر خاص | |
| نشكر جميع المساهمين الذين ساعدوا في تطوير هذا المشروع! 🙏 | |