docs
This commit is contained in:
292
docs/contributing.md
Normal file
292
docs/contributing.md
Normal file
@@ -0,0 +1,292 @@
|
||||
# Contributing
|
||||
|
||||
## Спасибо за интерес к Quoter! 🎉
|
||||
|
||||
Мы приветствуем вклад от сообщества. Этот документ содержит руководство по участию в разработке проекта.
|
||||
|
||||
## Как внести свой вклад
|
||||
|
||||
### 1. Сообщить о баге
|
||||
|
||||
Если вы нашли баг, создайте issue с:
|
||||
|
||||
- **Кратким описанием** проблемы
|
||||
- **Шагами для воспроизведения**
|
||||
- **Ожидаемым и фактическим поведением**
|
||||
- **Версией** Rust, Redis, и других зависимостей
|
||||
- **Логами** (если применимо)
|
||||
|
||||
### 2. Предложить новую функциональность
|
||||
|
||||
Для предложения новой функциональности:
|
||||
|
||||
- Опишите проблему, которую решает ваше предложение
|
||||
- Предложите решение
|
||||
- Обсудите альтернативы
|
||||
- Укажите приоритет
|
||||
|
||||
### 3. Внести код
|
||||
|
||||
#### Подготовка
|
||||
|
||||
1. **Fork** репозиторий
|
||||
2. **Clone** ваш fork локально
|
||||
3. Создайте **feature branch**:
|
||||
```bash
|
||||
git checkout -b feature/amazing-feature
|
||||
```
|
||||
|
||||
#### Разработка
|
||||
|
||||
1. **Следуйте стандартам кода**:
|
||||
```bash
|
||||
cargo fmt
|
||||
cargo clippy
|
||||
```
|
||||
|
||||
2. **Добавьте тесты** для новой функциональности
|
||||
|
||||
3. **Обновите документацию** если необходимо
|
||||
|
||||
4. **Проверьте сборку**:
|
||||
```bash
|
||||
cargo build
|
||||
cargo test
|
||||
```
|
||||
|
||||
#### Commit и Push
|
||||
|
||||
1. **Создайте commit** с описательным сообщением:
|
||||
```bash
|
||||
git commit -m "feat: add amazing feature"
|
||||
```
|
||||
|
||||
2. **Push** в ваш fork:
|
||||
```bash
|
||||
git push origin feature/amazing-feature
|
||||
```
|
||||
|
||||
3. **Создайте Pull Request**
|
||||
|
||||
## Стандарты кода
|
||||
|
||||
### Rust
|
||||
|
||||
- Следуйте [Rust Style Guide](https://doc.rust-lang.org/1.0.0/style/style/naming/README.html)
|
||||
- Используйте `cargo fmt` для форматирования
|
||||
- Используйте `cargo clippy` для проверки стиля
|
||||
- Документируйте публичные API
|
||||
|
||||
### Commit Messages
|
||||
|
||||
Используйте [Conventional Commits](https://www.conventionalcommits.org/):
|
||||
|
||||
```
|
||||
<type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer(s)]
|
||||
```
|
||||
|
||||
Типы:
|
||||
- `feat:` - новая функциональность
|
||||
- `fix:` - исправление бага
|
||||
- `docs:` - изменения в документации
|
||||
- `style:` - форматирование кода
|
||||
- `refactor:` - рефакторинг
|
||||
- `test:` - добавление тестов
|
||||
- `chore:` - обновление зависимостей
|
||||
|
||||
Примеры:
|
||||
```
|
||||
feat: add user quota management API
|
||||
fix(auth): handle expired tokens properly
|
||||
docs: update API documentation
|
||||
style: format code with cargo fmt
|
||||
```
|
||||
|
||||
### Тестирование
|
||||
|
||||
- **Unit тесты** для всех новых функций
|
||||
- **Интеграционные тесты** для API endpoints
|
||||
- **Тесты производительности** для критических участков
|
||||
- Минимальное покрытие кода: **80%**
|
||||
|
||||
### Документация
|
||||
|
||||
- Обновляйте README.md если необходимо
|
||||
- Добавляйте комментарии к сложному коду
|
||||
- Документируйте API изменения
|
||||
- Обновляйте примеры использования
|
||||
|
||||
## Процесс Pull Request
|
||||
|
||||
### Создание PR
|
||||
|
||||
1. **Заполните шаблон** Pull Request
|
||||
2. **Опишите изменения** подробно
|
||||
3. **Укажите связанные issues**
|
||||
4. **Добавьте скриншоты** если применимо
|
||||
|
||||
### Code Review
|
||||
|
||||
- **Два approval** требуются для merge
|
||||
- **CI/CD** должен пройти успешно
|
||||
- **Code coverage** не должен уменьшиться
|
||||
- **Безопасность** проверяется автоматически
|
||||
|
||||
### После Merge
|
||||
|
||||
- **Feature branch** удаляется автоматически
|
||||
- **Release** создается для значительных изменений
|
||||
- **Документация** обновляется
|
||||
|
||||
## Настройка среды разработки
|
||||
|
||||
### Требования
|
||||
|
||||
- Rust 1.70+
|
||||
- Redis 6.0+
|
||||
- Git
|
||||
|
||||
### Установка
|
||||
|
||||
```bash
|
||||
# Fork и clone
|
||||
git clone https://github.com/YOUR_USERNAME/quoter.git
|
||||
cd quoter
|
||||
|
||||
# Установка зависимостей
|
||||
cargo build
|
||||
|
||||
# Настройка pre-commit hooks
|
||||
cargo install cargo-husky
|
||||
cargo husky install
|
||||
```
|
||||
|
||||
### Локальная разработка
|
||||
|
||||
```bash
|
||||
# Запуск Redis
|
||||
docker run -d -p 6379:6379 redis:7-alpine
|
||||
|
||||
# Настройка переменных окружения
|
||||
cp .env.example .env
|
||||
# Отредактируйте .env
|
||||
|
||||
# Запуск приложения
|
||||
cargo run
|
||||
|
||||
# Запуск тестов
|
||||
cargo test
|
||||
```
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
quoter/
|
||||
├── src/ # Исходный код
|
||||
│ ├── main.rs # Точка входа
|
||||
│ ├── app_state.rs # Состояние приложения
|
||||
│ ├── auth.rs # Аутентификация
|
||||
│ ├── core.rs # API ядра
|
||||
│ ├── handlers/ # HTTP обработчики
|
||||
│ ├── lookup.rs # Поиск файлов
|
||||
│ ├── overlay.rs # Оверлеи
|
||||
│ ├── s3_utils.rs # S3 утилиты
|
||||
│ └── thumbnail.rs # Миниатюры
|
||||
├── docs/ # Документация
|
||||
├── tests/ # Интеграционные тесты
|
||||
├── Cargo.toml # Зависимости
|
||||
└── README.md # Основная документация
|
||||
```
|
||||
|
||||
## Роли в проекте
|
||||
|
||||
### Maintainers
|
||||
|
||||
- **Code review** всех PR
|
||||
- **Release management**
|
||||
- **Architecture decisions**
|
||||
- **Community management**
|
||||
|
||||
### Contributors
|
||||
|
||||
- **Feature development**
|
||||
- **Bug fixes**
|
||||
- **Documentation**
|
||||
- **Testing**
|
||||
|
||||
### Reviewers
|
||||
|
||||
- **Code review** assigned PRs
|
||||
- **Quality assurance**
|
||||
- **Performance review**
|
||||
|
||||
## Коммуникация
|
||||
|
||||
### Issues
|
||||
|
||||
- Используйте **labels** для категоризации
|
||||
- **Assign** issues к себе если работаете над ними
|
||||
- **Update** статус регулярно
|
||||
|
||||
### Discussions
|
||||
|
||||
- **GitHub Discussions** для общих вопросов
|
||||
- **RFC** для значительных изменений
|
||||
- **Architecture** для архитектурных решений
|
||||
|
||||
### Code Review
|
||||
|
||||
- **Будьте конструктивными**
|
||||
- **Объясняйте причины** изменений
|
||||
- **Предлагайте альтернативы**
|
||||
- **Отвечайте на комментарии**
|
||||
|
||||
## Безопасность
|
||||
|
||||
### Отчеты о уязвимостях
|
||||
|
||||
Для критических уязвимостей:
|
||||
|
||||
1. **НЕ создавайте публичный issue**
|
||||
2. **Отправьте email** на security@example.com
|
||||
3. **Опишите уязвимость** подробно
|
||||
4. **Предложите решение** если возможно
|
||||
|
||||
### Безопасность кода
|
||||
|
||||
- **Не коммитьте секреты**
|
||||
- **Валидируйте входные данные**
|
||||
- **Используйте безопасные зависимости**
|
||||
- **Проверяйте код на уязвимости**
|
||||
|
||||
## Лицензия
|
||||
|
||||
Внося код в проект, вы соглашаетесь с тем, что ваш вклад будет лицензирован под MIT License.
|
||||
|
||||
## Благодарности
|
||||
|
||||
Спасибо всем контрибьюторам, которые помогают сделать Quoter лучше! 🙏
|
||||
|
||||
### Способы поддержки
|
||||
|
||||
- **Code contributions**
|
||||
- **Bug reports**
|
||||
- **Feature requests**
|
||||
- **Documentation improvements**
|
||||
- **Community support**
|
||||
- **Financial support** (если применимо)
|
||||
|
||||
## Контакты
|
||||
|
||||
- **Issues**: [GitHub Issues](https://github.com/your-org/quoter/issues)
|
||||
- **Discussions**: [GitHub Discussions](https://github.com/your-org/quoter/discussions)
|
||||
- **Email**: maintainers@example.com
|
||||
- **Chat**: [Discord/Slack] (если есть)
|
||||
|
||||
---
|
||||
|
||||
**Спасибо за ваш вклад в Quoter!** 🚀
|
||||
Reference in New Issue
Block a user