Skip to content

Latest commit

 

History

History
134 lines (96 loc) · 9.75 KB

CONTRIBUTING.md

File metadata and controls

134 lines (96 loc) · 9.75 KB

Добро пожаловать

Радостно видеть, что вам интересен этот проект. Прежде всего стоит отметить, что мы всегда рады новым участникам и готовы помочь вам внести свой вклад в развитие. В этом файле вы найдёте информацию о том, как это сделать. Не стесняйтесь создавать новые issues и дискуссии, если у вас возникли вопросы или проблемы, даже если они кажутся вам незначительными.

Участники

Всех участники проекта, которые внесли хоть какой-то вклад, отображаются в мобильном приложении в разделе "О приложении". Это происходит автоматически, как только ваш Pull Request будет принят и включён в релиз.

Ваше участие

Каждый может внести свой вклад в развитие данного проекта. Мы с удовольствием рассмотрим ваш Pull Request, ознакомимся с вашими проблемами и вопросами.

Есть несколько принципов, которых нужно придерживаться:

  1. Уважайте чужой труд. Если вы что-то откуда-то заимствуете, то обязательно указывайте источники.
  2. Тщательно документируйте свой код.
  3. Придерживайтесь стандартов оформления кода. Например, таких, как Effective Dart: Style

DCO

Мы используем Developer Certificate of Origin (DCO) в качестве дополнительной защиты от недобросовестных участников. Это значит, что каждый коммит должен быть подписан автором, используя git commit -s. Подробнее о DCO можно прочитать здесь. Узнать, как подписать свой коммит, можно здесь.

Установка и конфигурация проекта

Перед началом убедитесь, что у вас установлен JDK 17.

  1. Установите стабильную версию Flutter для своей операционной системы, если вы этого ещё не сделали. Используйте flutter doctor для проверки установки и конфигурации Flutter.

Этот проект использует некотоыре пакеты, которые необходимо установить перед началом работы:

  • fvm для управления версиями Flutter.
  • melos для управления подпакетами.
  1. Установите fvm и melos:
dart pub global activate fvm
dart pub global activate melos
  1. Используйте fvm в корневой директории проекта для установки версии Flutter, необходимой для работы над проектом:
fvm install
fvm flutter precache
  1. Используйте melos в корневой директории проекта для установки зависимостей всех подпакетов:
melos bootstrap

Важно: Если ваш терминал не распознает команды fvm и melos, убедитесь, что Pub Cache находится в вашем PATH. Подробнее об этом можно прочитать здесь.

  1. После установки всех зависимостей, вы можете запустить проект, выполнив команду:
fvm flutter run

Дополнительные команды

  • Используйте одну из этих команд для сборки проекта:
fvm flutter build apk
fvm flutter build ios
fvm flutter build appbundle
  • Используйте melos для запуска команд во всех подпакетах:
melos run
  • Если возникнут какие-либо проблемы при выполнении предыдущих действий, выполните приведенную ниже команду для анализа и устанения неполадок: -->
flutter doctor

Генерация кода

Проект использует build_runner для генерации кода, например, сериализаторов JSON и маршалинга.

Используйте melos run для запуска команды flutter pub run build_runner build во всех подпакетах.

Конфигурация Firebase Analytics

Пропустите этот шаг, если вы не планируете распространять свою собственную сборку приложения.

  1. Зарегистрируйте приложение в Firebase.
  2. Выполните шаги для генерации firebase_options.dart файла с помощью FlutterFire CLI.
  3. Firebase Analytics для Android не поддерживает Dart-only конфигурацию. Как только ваше приложение для Android будет зарегистрировано в Firebase, загрузите файл конфигурации с консоли Firebase (файл называется google-services.json). Добавьте этот файл в каталог android/app.
  4. Проект готов для использования с Firebase Analytics и Crashlytics.

Переменные окружения

Приложение использует переменные среды времени компиляции для хранения конфиденциальных данных, таких как ключи API и токены.

Эти переменные должны передаваться при запуске или сборке приложения с помощью аргумента --dart-define или установленной переменной окружения. Если вам нужно передать несколько пар ключ-значение, просто определите --dart-define несколько раз.

Переменные приложения, используемые в проекте:

  • SENTRY_DSN - DSN для отправки отчетов об ошибках в Sentry (необязательно).
  • LK_CLIENT_ID - ID клиента для авторизации в Личном кабинете с помощью OAuth2.
  • LK_CLIENT_SECRET - Секретный ключ клиента для авторизации в Личном кабинете с помощью OAuth2.

Пример:

fvm run --dart-define=SENTRY_DSN=YOUR_DSN --dart-define=LK_CLIENT_ID=YOUR_CLIENT_ID --dart-define=LK_CLIENT_SECRET=YOUR_CLIENT_SECRET

Если LK_CLIENT_ID и LK_CLIENT_SECRET не будут переданы, приложение будет работать в режиме "без авторизации", а пользователь не сможет войти в Личный кабинет.

Запуск API сервера

В папке api расположен исходный код сервера, который используется для получения расписания, новостей, данных о сообществе. В качестве бэкенд-фреймворка используется dart_frog. Сервер и мобильное приложение используют общую кодовую базу, а API-клиенты, с помощью которых приложение взаимодействует с сервером, определены в ./api/lib/src/client/api_client.dart.

Запуск сервера

  1. Установите зависимости сервера:
cd api
dart pub get
  1. Установите dart_frog_cli:
dart pub global activate dart_frog_cli
  1. Запустите сервер:
dart_frog dev

Создание production-сборки сервера:

dart_frog build

Используйте ApiClient.localhost() для взаимодействия с сервером во время разработки

final apiClient = ApiClient();
.

Соглашение о коммитах

Мы используем семантическое именование коммитов, чтобы упростить процесс релизов и автоматизировать генерацию changelog'ов. Придерживайтесь правил, определённых в Conventional Commits.