# راهنمای مشارکت در ویرایشگر فارسی

از علاقه شما به مشارکت در پروژه ویرایشگر فارسی متشکریم! این سند راهنمایی‌های لازم برای مشارکت در این پروژه را ارائه می‌دهد.

## فرآیند مشارکت

1. ابتدا مخزن را فورک کنید
2. یک شاخه جدید برای ویژگی یا رفع باگ خود ایجاد کنید
   ```bash
   git checkout -b feature/amazing-feature
   # یا
   git checkout -b fix/bug-description
   ```
3. تغییرات خود را اعمال کنید
4. تغییرات را کامیت کنید
   ```bash
   git commit -m 'توضیح مختصر و مفید درباره تغییرات'
   ```
5. شاخه خود را به مخزن فورک شده پوش کنید
   ```bash
   git push origin feature/amazing-feature
   ```
6. یک درخواست ادغام (Pull Request) ایجاد کنید

## استانداردهای کدنویسی

### پایتون

- از [PEP 8](https://www.python.org/dev/peps/pep-0008/) پیروی کنید
- از نام‌گذاری مناسب و توصیفی استفاده کنید
- برای تمام توابع و کلاس‌ها docstring بنویسید
- حداکثر طول خط 88 کاراکتر باشد
- از type hints استفاده کنید
- از ابزارهای زیر برای بررسی کیفیت کد استفاده کنید:
  - black: برای فرمت‌دهی خودکار کد
  - isort: برای مرتب‌سازی import ها
  - flake8: برای بررسی استایل کد
  - mypy: برای بررسی استاتیک تایپ‌ها

### جاوااسکریپت

- از استاندارد ES6+ استفاده کنید
- از نام‌گذاری camelCase برای متغیرها و توابع استفاده کنید
- از نام‌گذاری PascalCase برای کلاس‌ها استفاده کنید
- از ESLint برای بررسی کیفیت کد استفاده کنید
- از Prettier برای فرمت‌دهی کد استفاده کنید

### CSS

- از BEM (Block Element Modifier) برای نام‌گذاری کلاس‌ها استفاده کنید
- از متغیرهای CSS برای رنگ‌ها و اندازه‌ها استفاده کنید
- از Stylelint برای بررسی کیفیت کد استفاده کنید

## تست‌ها

برای هر ویژگی جدید یا رفع باگ، تست‌های مناسب بنویسید:

- تست‌های واحد برای توابع و کلاس‌ها
- تست‌های یکپارچگی برای ویژگی‌های کامل
- تست‌های امنیتی برای ویژگی‌های حساس

برای اجرای تست‌ها:

```bash
# اجرای تمام تست‌ها
python manage.py test

# اجرای تست‌های یک ماژول خاص
python manage.py test persian_editor.tests.test_security
```

## مستندات

برای هر ویژگی جدید، مستندات مناسب اضافه کنید:

- docstring برای توابع و کلاس‌ها
- به‌روزرسانی README.md در صورت نیاز
- افزودن مثال‌های کاربردی
- به‌روزرسانی CHANGELOG.md

## امنیت

امنیت برای ما بسیار مهم است. اگر مشکل امنیتی پیدا کردید:

1. آن را به صورت عمومی افشا نکنید
2. به آدرس ایمیل [persianeditor.ir@gmail.com](mailto:persianeditor.ir@gmail.com) گزارش دهید
3. جزئیات کامل مشکل و نحوه بازتولید آن را ارائه دهید

## انتشار

فرآیند انتشار نسخه جدید:

1. به‌روزرسانی شماره نسخه در `setup.py` و `__init__.py`
2. به‌روزرسانی `CHANGELOG.md`
3. ایجاد یک تگ گیت با شماره نسخه
4. ساخت بسته توزیع
   ```bash
   python setup.py sdist bdist_wheel
   ```
5. آپلود به PyPI
   ```bash
   twine upload dist/*
   ```

## سوالات

اگر سوالی دارید، می‌توانید:

- یک Issue در GitHub ایجاد کنید
- در بخش Discussions گیت‌هاب سوال خود را مطرح کنید
- با ما از طریق ایمیل تماس بگیرید

با تشکر از مشارکت شما!
