tonykolomeytsev / mpeiapp

MpeiX - Расписание пар, карта корпусов и личный кабинет БАРС для студентов и преподавателей НИУ МЭИ
MIT License
41 stars 4 forks source link
android dark-theme elm-architecture elmslie firebase koin kotlin kotlin-android mvi-android rxjava

MpeiX - приложение МЭИ здорового человека

GitHub tag (latest by date) Build status License: MIT

Расписание пар, заметки, личный кабинет БАРС и крутая карта для студентов и преподавателей НИУ МЭИ. Самое функциональное, легковесное и стабильное МЭИшное приложение.

Фичи приложения:

Пулл реквесты приветствуются.

Скриншоты

screenshots 1

screenshots 2

Требования приложения

Интересное для разработчиков

Стек

Архитектура

В проекте используется Clean Architecture, в некоторых местах допускаются упрощения.

Если хотите разобраться в устройстве проекта, специально для вас создан файлик ARCHITECTURE.md.

Планы на будущее

  1. В самое ближайшее время планируется переход с RxJava на Kotlin Coroutines, как более легковесную альтернативу. Ну и потому что корутины теперь являются новым мейнстримом.
  2. Переход с Fragments на Jetpack Compose. Это позволит уменьшить вес приложения, увеличить скорость билда, да и в целом упростить поддержку кодовой базы, что положительно скажется на частоте обновлений приложения.
  3. Редизайн приложения в соответствии с новыми гайдлайнами Material.
  4. Полировка существующих фич и добавление нового функционала. Новые фичи сейчас на стадии рисовки в Figma. Добавляться будут только реально необходимые функции. Лишная фигня, которой пользуются раз в год и которую сложно поддерживать, в приложении появляться не будет.

Инструкция по сборке проекта

  1. Создайте на Firebase два конфига google-services.json:

    • Для release версии приложения (package name kekmech.ru.mpeiapp): положите конфиг в корень модуля app
    • Для debug версии приложения (package name kekmech.ru.mpeiapp.dev): положите конфиг в app/src/debug.

    Инструкция по получению google-services.json.

  2. В глобальный gradle.properties добавьте поле mpeiapp_google_maps_api_key="{SECRET}", где {SECRET} - ключ от API Google Maps. Инструкция по получению ключа.

  3. Скачайте и установите JDK 17 версии, укажите в настройках проекта java 17 по умолчанию для Gradle и компилятора Kotlin:

    File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle

  4. Установите плагин Kotest, с ним будет проще гонять тесты.

После первых двух пунктов проект соберется, после двух других начнут работать тесты. В связи с выходом Gradle 7.5.0 и AGP 7.4.0 проект перешел на Java 17.

По понятным причинам в репозитории не будут опубликованы оригинальные ключи от Google Maps API и Firebase API. Используйте свои ключики.