-
Требования:
- Kotlin 2.0.21
- Gradle 8.13
- Android Gradle Plugin 8.13.0
- JDK 17
- minSdk = 26, targetSdk = 35
-
Используемые фреймворки и библиотеки:
- Decompose
- MVIKotlin
- Room
- Jetpack Compose
-
Клонирование репозитория
git clone https://github.com/PavMash/ITSTORM_Final_Project.git
cd ITSTORM_Final_Project- При запуске в Androd Studio дождись синхронизации Gradle, после этого нажми на Run, чтобы забилдить и запустить проект.
- Приложение разделено на 3 модуля Gradle: core-data(логика хранения данных), core-domain(бизнесс-логика) и app(само приложение с UI).
- Для базы данных используется Room
- В качестве посредников между базой данных и потребителями выступают репозитории.
- В качестве архиетктурного шаблона используется MVI вместе с MVIKolin.
- У каждого экрана есть свои Store, StoreFactory, Component и его иплементация. Это обеспечивает инкапсуляцию состояния при реактивноти UI.
- Для навигации использован фреймворк Decompose. Он отлично работает в связке с MVIKotlin.
- Экраны разделены на пользовательчкие и админские. Для попадания на админские экраны необходимо ввести учетные данные админа (см. раздел Предзаполнение).
- Все, что касается пользовательских экранов (это были домашки).
- Админская панель управления пользователямии. Работает поиск по части имени и номеру телефона.
- Добавление новых пользователей через панель.
- Дашборд с историей сессий.
- Добавление новых сессий с выбором тарифа и станции(ПК)
- Всесторонняя валидация вводимых данных при создании пользователя и сессии
- Сессии с несколькими пользователями: возникли проблемы с сохранением связей пользователей и сессий, на решение которых ушло много времени; В итоге я решил отказаться от этой идеи
- Редактирование информации о сессии и изменение ее состояния: планировалось, но не реализовано из-за нехватки времени (параллельно была нагрузка по основной учебе)
- UI для удаления станций, тарифов, пользователей и сессий: на этапе планирования возникло много вопросов ("Стоит удалять сущности на совсем или помечать удалёнными и оставлять их в базе?", "Должно ли удлание пользователя/станции/тарифа влечь за собой удаление связанных сессий?"); По итогу было решено, что это слишком неоднозначная задача + нехватка времени сыграла роль
При первом запуске приложения база данных предзаполняется Пользователями, Тарифами, Станциями(ПК) и Новостями(пользовательская часть).
-
Имя: Вася Пароль: pass12345 Телефон: +71234567890 Роль: Пользователь
-
Имя: Ваня Пароль: 12345pass Телефон: +91235671234 Роль: Пользователь
-
Имя: James Пароль: smart_pass1 Телефон: +13569023457 Роль: Пользователь
-
Имя: admin Пароль: admin1 Телефон: +71111111111 Роль: Админ
- Код: PC-01
- Код: PC-02
- Код: PC-03
- Код: PC-04
- Код: PC-01
- Код: PC-01
В моей системы тарифы могут быть коммерческими(они предлагаются пользователю) или системными(вспомогательные или нужны для работы системы)
-
Название: Студенческий Цена за час (в центах): 100 Минимальное списываемое время: 2 мин Шаг округления: 15 мин Тип: Коммерчский
-
Название: Обычный Цена за час (в центах): 200 Минимальное списываемое время: 1 мин Шаг округления: 10 мин Тип: Коммерчский
-
Название: Пауза Цена за час (в центах): 50 Минимальное списываемое время: 1 мин Шаг округления: 5 мин Тип: Системный
Хочу сказать спасибо всем организаторам Лаборатории и всем кто принимал в ней участие! Благодаря вам я многому научился и много узнал о современной разработке на Android. Я намерен и дальше развиваться в этом направлении и надеюсь, что наши с вами дороги в будущем еще пересекутся.