Радостно видеть, что вам интересен этот проект. Прежде всего стоит отметить, что мы всегда рады новым участникам и готовы помочь вам внести свой вклад в развитие. В этом файле вы найдёте информацию о том, как это сделать. Не стесняйтесь создавать новые issues и дискуссии, если у вас возникли вопросы или проблемы, даже если они кажутся вам незначительными.
Всех участники проекта, которые внесли хоть какой-то вклад, отображаются в мобильном приложении в разделе "О приложении". Это происходит автоматически, как только ваш Pull Request будет принят и включён в релиз.
Каждый может внести свой вклад в развитие данного проекта. Мы с удовольствием рассмотрим ваш Pull Request, ознакомимся с вашими проблемами и вопросами.
Есть несколько принципов, которых нужно придерживаться:
- Уважайте чужой труд. Если вы что-то откуда-то заимствуете, то обязательно указывайте источники.
- Тщательно документируйте свой код.
- Придерживайтесь стандартов оформления кода. Например, таких, как Effective Dart: Style
Мы используем Developer Certificate of Origin (DCO) в качестве дополнительной защиты от недобросовестных участников. Это значит, что каждый коммит должен быть подписан автором, используя git commit -s
. Подробнее о DCO можно прочитать здесь. Узнать, как подписать свой коммит, можно здесь.
Перед началом убедитесь, что у вас установлен JDK 17.
- Установите стабильную версию Flutter для своей операционной системы, если вы этого ещё не сделали. Используйте
flutter doctor
для проверки установки и конфигурации Flutter.
Этот проект использует некотоыре пакеты, которые необходимо установить перед началом работы:
- Установите fvm и melos:
dart pub global activate fvm
dart pub global activate melos
- Используйте fvm в корневой директории проекта для установки версии Flutter, необходимой для работы над проектом:
fvm install
fvm flutter precache
- Используйте melos в корневой директории проекта для установки зависимостей всех подпакетов:
melos bootstrap
Важно: Если ваш терминал не распознает команды fvm
и melos
, убедитесь, что Pub Cache находится в вашем PATH
. Подробнее об этом можно прочитать здесь.
- После установки всех зависимостей, вы можете запустить проект, выполнив команду:
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.
- Выполните шаги для генерации
firebase_options.dart
файла с помощью FlutterFire CLI. - Firebase Analytics для Android не поддерживает Dart-only конфигурацию. Как только ваше приложение для Android будет зарегистрировано в Firebase, загрузите файл конфигурации с консоли Firebase (файл называется
google-services.json
). Добавьте этот файл в каталогandroid/app
. - Проект готов для использования с 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
расположен исходный код сервера, который используется для получения расписания, новостей, данных о сообществе. В качестве бэкенд-фреймворка используется dart_frog. Сервер и мобильное приложение используют общую кодовую базу, а API-клиенты, с помощью которых приложение взаимодействует с сервером, определены в ./api/lib/src/client/api_client.dart
.
- Установите зависимости сервера:
cd api
dart pub get
- Установите dart_frog_cli:
dart pub global activate dart_frog_cli
- Запустите сервер:
dart_frog dev
Создание production-сборки сервера:
dart_frog build
Используйте ApiClient.localhost()
для взаимодействия с сервером во время разработки
Line 170 in eea141f
Мы используем семантическое именование коммитов, чтобы упростить процесс релизов и автоматизировать генерацию changelog'ов. Придерживайтесь правил, определённых в Conventional Commits.