Skip to content

Repository files navigation

ITSTORM Финальный Проект (Павел Мащенко)

Сетап

  1. Требования:

    • Kotlin 2.0.21
    • Gradle 8.13
    • Android Gradle Plugin 8.13.0
    • JDK 17
    • minSdk = 26, targetSdk = 35
  2. Используемые фреймворки и библиотеки:

    • Decompose
    • MVIKotlin
    • Room
    • Jetpack Compose
  3. Клонирование репозитория

git clone https://github.com/PavMash/ITSTORM_Final_Project.git
cd ITSTORM_Final_Project
  1. При запуске в Androd Studio дождись синхронизации Gradle, после этого нажми на Run, чтобы забилдить и запустить проект.

Архитектура

  • Приложение разделено на 3 модуля Gradle: core-data(логика хранения данных), core-domain(бизнесс-логика) и app(само приложение с UI).
  • Для базы данных используется Room
  • В качестве посредников между базой данных и потребителями выступают репозитории.
  • В качестве архиетктурного шаблона используется MVI вместе с MVIKolin.
  • У каждого экрана есть свои Store, StoreFactory, Component и его иплементация. Это обеспечивает инкапсуляцию состояния при реактивноти UI.
  • Для навигации использован фреймворк Decompose. Он отлично работает в связке с MVIKotlin.
  • Экраны разделены на пользовательчкие и админские. Для попадания на админские экраны необходимо ввести учетные данные админа (см. раздел Предзаполнение).

Что реализовано

  • Все, что касается пользовательских экранов (это были домашки).
  • Админская панель управления пользователямии. Работает поиск по части имени и номеру телефона.
  • Добавление новых пользователей через панель.
  • Дашборд с историей сессий.
  • Добавление новых сессий с выбором тарифа и станции(ПК)
  • Всесторонняя валидация вводимых данных при создании пользователя и сессии

Что не получилось реализовать

  • Сессии с несколькими пользователями: возникли проблемы с сохранением связей пользователей и сессий, на решение которых ушло много времени; В итоге я решил отказаться от этой идеи
  • Редактирование информации о сессии и изменение ее состояния: планировалось, но не реализовано из-за нехватки времени (параллельно была нагрузка по основной учебе)
  • UI для удаления станций, тарифов, пользователей и сессий: на этапе планирования возникло много вопросов ("Стоит удалять сущности на совсем или помечать удалёнными и оставлять их в базе?", "Должно ли удлание пользователя/станции/тарифа влечь за собой удаление связанных сессий?"); По итогу было решено, что это слишком неоднозначная задача + нехватка времени сыграла роль

Предзаполнение (для тестировщиков)

При первом запуске приложения база данных предзаполняется Пользователями, Тарифами, Станциями(ПК) и Новостями(пользовательская часть).

Пользователи

  1. Имя: Вася Пароль: pass12345 Телефон: +71234567890 Роль: Пользователь

  2. Имя: Ваня Пароль: 12345pass Телефон: +91235671234 Роль: Пользователь

  3. Имя: James Пароль: smart_pass1 Телефон: +13569023457 Роль: Пользователь

  4. Имя: admin Пароль: admin1 Телефон: +71111111111 Роль: Админ

Станции

  1. Код: PC-01
  2. Код: PC-02
  3. Код: PC-03
  4. Код: PC-04
  5. Код: PC-01
  6. Код: PC-01

Тарифы

В моей системы тарифы могут быть коммерческими(они предлагаются пользователю) или системными(вспомогательные или нужны для работы системы)

  1. Название: Студенческий Цена за час (в центах): 100 Минимальное списываемое время: 2 мин Шаг округления: 15 мин Тип: Коммерчский

  2. Название: Обычный Цена за час (в центах): 200 Минимальное списываемое время: 1 мин Шаг округления: 10 мин Тип: Коммерчский

  3. Название: Пауза Цена за час (в центах): 50 Минимальное списываемое время: 1 мин Шаг округления: 5 мин Тип: Системный

P.S.

Хочу сказать спасибо всем организаторам Лаборатории и всем кто принимал в ней участие! Благодаря вам я многому научился и много узнал о современной разработке на Android. Я намерен и дальше развиваться в этом направлении и надеюсь, что наши с вами дороги в будущем еще пересекутся.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages