No description
  • Kotlin 90.5%
  • DM 9.5%
Find a file
2026-03-25 21:35:14 +03:00
.idea Удалил лишний код, в том числе механику обновлений 2025-10-05 19:41:32 +03:00
app Релиз версии 3.10.a.1 2026-03-25 21:35:14 +03:00
gradle/wrapper Обновление AGP до версии 9.0.1 2026-03-25 21:26:08 +03:00
.gitignore Initial commit 2024-01-22 09:25:10 +03:00
build.gradle.kts Релиз версии 3.10.a.1 2026-03-25 21:35:14 +03:00
gradle.properties Обновление AGP до версии 9.0.1 2026-03-25 21:26:08 +03:00
gradlew Initial commit 2024-01-22 09:25:10 +03:00
gradlew.bat Initial commit 2024-01-22 09:25:10 +03:00
README.md Update README.md 2024-06-03 18:52:55 +00:00
settings.gradle.kts Initial commit 2024-01-22 09:25:10 +03:00

TimeTableV3 (СевГУ.Расписание)

Минималистичное приложение для просмотра расписания СевГУ.

Приложение НЕ появится ни в GooglePlay, ни в AppGallery, ни в RuStore (из-за особенностей модерации).

UPD: Попробую снова закинуть его в RuStore, так как навгация приведена в порядок, а одна из причин ошибки получения расписания исправлена.

UPD 2: Опять проблемы с модерацией, буду вводить разграничения версий. Версия из репозитория будет поддерживать обновление внутри приложения, а версия для RuStore останется без этого функцонала.

Описание

Моя история взяимодействия с расписанием в СевГУ началась с табличек в Excel (они и сейчас существуют). ... Позже появлялись неофициальные сервисы для более удобного просмотра расписания, но у всех был общий недостаток — требуется открыть браузер, перейти по ссылке и дождаться загрузки.

Среди таких ресурсов появился https://sevsu.samrzhevsky.ru/, в котором реализована возможность получения расписания через API, что сильно упрощает создание сторонних решений, привязанных к общей базе.

Одним их таких сторонних решений и стало данное приложение. Особенностью является возможность быстрого открытия расписания для своей группы, а также некоторые мелкие решения для повышения продуктивности. Мне. как студенту, очень приятно, что на проверку расписания я потратил 5 секунд вместо 15.

К сожалению, на текущем этапе развития приложения не реализовано кэширование, поэтому для просмотра расписания всё ещё требуется доступ в интернет.

Права и разрешения

  • MANAGE_EXTERNAL_STORAGE — необходимо для скачивания более новой версии (Android 11+)
  • READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE — необходимы для вышеописанной цели при Android старше, чем 11 (10 или ниже)
  • REQUEST_PACKAGE_INSTALL — необходимо для вызова установщика пакетов в рамках обновления через NekoLab
  • WRITE_CALENDAR — необходимо для быстрого добавления занятий в календарь (без использования Activity от приложения календаря)

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

CI/CD

Надоело ручками клацать по кнопкам для сборки приложения, поэтому в ближайшее время хочу реализовать автосборку с применением Gitlab CI. Возможно, что также появится полноценный CD, так как у RuStore есть некоторый API от консоли разработчика, что по идее может дать возможность автоматизировать загрузку новых версий в магазин приложений.

Чисто для себя оставлю тут эту ссылку https://habr.com/ru/companies/doubletapp/articles/712490/, чтобы потом можно было изучить механизм CI более подробно и реализовать это. Но сейчас заканчивается семестр, а его надо закрывать в срок, так что потом этим займусь.

RuStore

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

Поэтому будет введено разграничение версий, чтобы была возможность выбора между обновлением через RuStore и обновлением без его участия.

Статистика

Для сбора статистики буду прикручивать дополнительный функционал.

Собирать планирую:

  1. Факт запуска приложения (включая наименование устройства и версию Android);
  2. Факт смены группы (для анализа востребованности данного функцонала);

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

Развитие приложения

Хочется добавить вкладку с параметрами интерфейса, чтобы можно было управлять логикой отображения и компоновкой макета.

Но перед этим необходимо привести кодовую базу в нормальное состояние.

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