Skip to content

Мультиплатформенное приложение для аренды авто в Омске.

Notifications You must be signed in to change notification settings

Student-Labs-2024/vodimobile-kmp-app

Repository files navigation

Логотип компании "Водимобиль"

Язык программирования Kotlin Язык программирования Swift Инструмент Gradle Android Studio Git iOS Android

Суть проекта 💫

Автоматизировать процесс аренды автомобилей в Омске путём создания Android и IOS приложений. Приложения интегрированы с CRM «WS автопрокат», которую использует «Водимобиль».

Содержание 📖

Как начать 🐣

Для начала стоит склонировать репозиторий себе на компьютер путём выполнения команды Git Hub.

Git hub

Если у вас нет Git Hub на устройстве, то установите его по ссылке.

Как склонировать проект

Путём почти одновременного начатия клавишь Win + R (на ОС Windows) откроется окно, в котором нужно вписать cmd. В открывшемся окошке перейдите в ту директорию на вашем устройстве, куда хотите склонировать репозирторий с проектом, для этого используйте cd Путь к папке. После наберите команду git clone https://github.com/Student-Labs-2024/vodimobile-kmp-app.git. Дождитесь выполнения команды. После чего у вас по указанному пути появится папка с проектом.

Где работать 🤖

Для работы вам понадобится Android Studio. Её можно скачать на официальном сайте. После загрузки откройте склонированный с Git Hub проект. Дождитесь загрузки проекта.

Начальные действия ❗

Перед началом работы с проектом (сборке его исполняемых файлов или внесение изменений в код) добавьте в local.properties сделующие строчки:

crm.server =
crm.port =
crm.login =
crm.password.hash =
crm.test.access.token = 
crm.test.refresh.token = 

После знака равно запишите значения сервера и порта «Водимобиль» без пробелов.

Сборка 🛠️

Откройте терминал внутри Android Studio. Если Вы не можете найти терминала нет, то воспользуйтесь такой последовательностью для навигации внутри Android Studio к терминалу View > Tool Windows > Terminal. Вы можете собрать исполняемые файлы для ОС Android или IOS.

Собрать для ОС Android

Для того, чтобы собрать исполняемый файл для ОС Android (APK) впишите в терминале следующую команду ./gradlew assembleDebug. Дождитель выполнения. При успешном выполнении, Вы увидите надпись "Build Successfull". Далее Вы сможете найти APK в корне проекта по следующему пути app/build/outputs/apk/app-debug.apk.

Собрать для IOS

Для того, чтобы собрать исполняемый файл для IOS нужно заархивировать директорию с кодом и отправить в TestFlight.

Структура проекта 📋

Проект сделан с использованием технологии KMP - Kotlin Multiplatform. В архитектуре используется три модуля AndroidApp, IosApp, Shared.

  • AndroidApp - модуль, содержащий приложение для ОС Android.
  • IosApp - модуль, содержащий приложение для IOS.
  • Shared - общий модуль, используемый обоями платформами.

Изображение, описывающее архитектуру проекта

KMP flow

Технологический стек

Android 👽

  • Jetpack Compose
  • Clean architecture
  • Минимальная поддерживаемая версия Android SDK 21, целевая - 34
  • Паттерн MVI
  • Koin
  • Slack lint

IOS 🍏

  • SwiftUI
  • Паттерн MVVM
  • Clean architecture
  • Минимальная поддерживаемая версия IOS 16, максимальная - текущая.
  • SwiftLint

Shared 🔮

Git flow 📀

Коммиты Все коммиты назваются на английском языке. Описание для коммата также пишется на английском языке. Пример формления коммита представлен ниже. Структура коммита должна быть следующая:
[optional scope]:
[optional body]
[optional footer(s)]

Пример:
feat: Create auto cards into main screen

[+] Create auto card list into main screen
[+] Adding auto card component and use it
[+] Adding custom resources into project
[+] Adding view model and model for popular auto list
[-] ...
[~] ...

Обозначения списка изменения в описании коммита:
- [+] - добавление новой фичи (функционала);
- [-] - удаление функционала;
- [~] - исправвление функционала.

Почитать про Git flow можно здесь.

Ветки
Ветки называем по следующему шаблону platform/action/name.
platfotm - android-app, ios-app, kmp-module, git-flow;
action - hot-fix или feature и т.п. (иногда, может не быть);
name - название вашей фичи, например “profile-screen”.

Все ветки для разработки создаются от develop.

Пул реквесты
Описание для пул реквеста и его название оформляется на английском языке. Присваиваете пул реквесту себя, в качестве разработчика, ставите ревьювера, присваиваете таг (label). Разговор в пул рекветсе можно вести на русском языке.
Ниже представлен шаблон и пример

Заголовок пул реквеста: Основная фича

Changes:

  1. change1:

    • definition1
    • definition2
  2. change1:

    • definition1

Пример:

Changes:

  1. New UI view:

    • Created the detail modal view with auto data
    • Added the modal auto view into main screen auto list
  2. Custom resources for UI:

    • New custom images and localizable strings

Темы
Название темы и её описание пишется на русском языке.

Релиз
После завершения определённого этапа разработки, все изменения переходят в master ветку. После чего следует создать релиз в Git Hub.

Диаграмма C4 📊

System context

System context

Containers context

Containers context

Components context KMP

Components context KMP

Components context IOS

Components context IOS

Components context Android

Components context Android