Files
quoter/docs/contributing.md
Untone ea92a376ed
Some checks failed
CI / test (push) Failing after 4m0s
CI / lint (push) Failing after 4s
CI / deploy (push) Has been skipped
docs
2025-08-02 00:18:09 +03:00

8.4 KiB
Raw Blame History

Contributing

Спасибо за интерес к Quoter! 🎉

Мы приветствуем вклад от сообщества. Этот документ содержит руководство по участию в разработке проекта.

Как внести свой вклад

1. Сообщить о баге

Если вы нашли баг, создайте issue с:

  • Кратким описанием проблемы
  • Шагами для воспроизведения
  • Ожидаемым и фактическим поведением
  • Версией Rust, Redis, и других зависимостей
  • Логами (если применимо)

2. Предложить новую функциональность

Для предложения новой функциональности:

  • Опишите проблему, которую решает ваше предложение
  • Предложите решение
  • Обсудите альтернативы
  • Укажите приоритет

3. Внести код

Подготовка

  1. Fork репозиторий
  2. Clone ваш fork локально
  3. Создайте feature branch:
    git checkout -b feature/amazing-feature
    

Разработка

  1. Следуйте стандартам кода:

    cargo fmt
    cargo clippy
    
  2. Добавьте тесты для новой функциональности

  3. Обновите документацию если необходимо

  4. Проверьте сборку:

    cargo build
    cargo test
    

Commit и Push

  1. Создайте commit с описательным сообщением:

    git commit -m "feat: add amazing feature"
    
  2. Push в ваш fork:

    git push origin feature/amazing-feature
    
  3. Создайте Pull Request

Стандарты кода

Rust

  • Следуйте Rust Style Guide
  • Используйте cargo fmt для форматирования
  • Используйте cargo clippy для проверки стиля
  • Документируйте публичные API

Commit Messages

Используйте Conventional Commits:

<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

Установка

# 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

Локальная разработка

# Запуск 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 (если применимо)

Контакты


Спасибо за ваш вклад в Quoter! 🚀