292 lines
8.4 KiB
Markdown
292 lines
8.4 KiB
Markdown
|
|
# 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!** 🚀
|