Skip to content
whatrushkiPublic

About

📚 Умное расписание для учебных заведений на Android

Topics

Resources

Stars

19 stars

Watchers

0 watching

Forks

Repository files navigation


Project Icon

SCHEDULE

Кроссплатформенный клиент и экосистема синхронизации академического расписания для студентов и преподавателей.



   

Releases   Web   GitHub Packages



О проекте

Schedule — мультиплатформенная экосистема для получения, парсинга и отображения расписания учебных заведений. Проект объединяет гетерогенные источники данных (от закрытых веб-API и XLSX-файлов до облачных таблиц) в единую нормализованную модель данных с поддержкой оперативного отслеживания замен, звонков и академических новостей.

Архитектура построена на базе Kotlin Multiplatform и Compose Multiplatform, обеспечивая консистентный пользовательский опыт и единый стек бизнес-логики на Android, десктопных операционных системах (Windows, macOS, Linux) и в браузере через WebAssembly.

Ключевые возможности

  • Мультипровайдерная синхронизация
    Автономные клиенты парсинга для каждого учебного заведения с извлечением групп, преподавателей, аудиторий и расписания звонков.

  • Автоматическое наложение замен
    Интеллектуальное сопоставление базового расписания с оперативными изменениями, вычисление добавленных, отмененных и перенесенных занятий.

  • Личные кабинеты студентов
    Авторизация, зачетные книжки, корпоративная почта, заказ справок, переаттестации и платежные QR-коды для поддерживаемых учебных заведений (ДГТУ, РКСИ).

  • Виджеты рабочего стола и уведомления о заменах
    Android Glance-виджеты расписания с динамической адаптацией тем оформления и периодический фоновый WorkManager-мониторинг оперативных замен для избранных групп.

  • Академические новости и галереи
    Интегрированная лента новостей учебных заведений с адаптивной версткой, предпросмотром медиафайлов, форматированием цитат и полноэкранным просмотром деталей.

  • Автономность и фоновый кэш
    Многоуровневое кэширование расписания и метаданных для бесперебойной работы клиентов в условиях нестабильной сети или недоступности серверов учреждений.

  • Периодический мониторинг и синхронизация
    Автоматизированный CI-конвейер проверки стабильности парсеров и синхронизации актуальных расписаний (schedule-sync) для веб-клиента и облачного fallback-источника.

Поддерживаемые учебные заведения

Организация Модуль Источник данных Статус
РКСИ — Ростовский-на-Дону колледж связи и информатики :libs:schedule:rksi XLSX, Google Таблицы, Веб Поддерживается
ДГТУ — Донской государственный технический университет :libs:schedule:dgtu Внутренний REST API Поддерживается
РГЭУ (РИНХ) — Ростовский государственный экономический университет :libs:schedule:rinh Официальный веб-сервис Поддерживается
ИУБиП — Институт управления, бизнеса и права :libs:schedule:iubip Информационный портал Поддерживается
ЮФУ (Мехмат) — Институт математики, механики и КН им. И.И. Воровича :libs:schedule:sfedu Официальный REST API / Веб Поддерживается
РГУПС — Ростовский государственный университет путей сообщения :libs:schedule:rgups Веб-портал расписания Поддерживается
РГУПС (Туапсе) — Филиал РГУПС в г. Туапсе :libs:schedule:rgups_tuapse Информационный сервис Поддерживается
ТвГУ — Тверской государственный университет :libs:schedule:tvgu Официальный REST API / Веб Поддерживается

Инженерная спецификация

Стек и инструменты

Архитектура

graph TD
    subgraph Targets["Точки сборки приложений"]
        APP["app (Android APK / AAB)"]
        DESKTOP["desktopApp (Desktop JVM)"]
        WASM["wasmApp (Web Wasm)"]
    end

    subgraph Presentation["Презентационный слой"]
        COMP_APP["composeApp (Root UI & Navigation)"]
        FEATURES["features (schedule, news, settings, account, dev)"]
    end

    subgraph CoreLayer["Ядро и навигация"]
        CORE_NAV["core:navigation"]
        CORE_FOUND["core:foundation"]
    end

    subgraph BusinessLayer["Бизнес-логика и данные"]
        DOMAIN["domain (Модели, Use Cases)"]
        DATA["data (Room DB, Репозитории, Кэш)"]
    end

    subgraph ParsersLayer["Парсеры заведений (libs:schedule)"]
        CORE_PARSER["core (Базовые DTO и клиенты)"]
        P_RKSI["rksi (Колледж связи)"]
        P_DGTU["dgtu (Донской тех. ун-т)"]
        P_IUBIP["iubip (Институт упр-я и права)"]
        P_RINH["rinh (РГЭУ РИНХ)"]
        P_SFEDU["sfedu (ЮФУ Мехмат)"]
        P_RGUPS["rgups (РГУПС)"]
        P_TUAPSE["rgups_tuapse (РГУПС Туапсе)"]
        P_TVGU["tvgu (ТвГУ Тверь)"]
    end

    subgraph ToolsLayer["Инструменты"]
        SYNC["tools:schedule-sync (CLI & CI Health Check)"]
    end

    APP --> COMP_APP
    DESKTOP --> COMP_APP
    WASM --> COMP_APP

    COMP_APP --> FEATURES
    FEATURES --> CORE_NAV
    FEATURES --> CORE_FOUND
    FEATURES --> DOMAIN

    DATA --> DOMAIN
    DATA --> CORE_PARSER
    DATA --> P_RKSI
    DATA --> P_DGTU
    DATA --> P_IUBIP
    DATA --> P_RINH
    DATA --> P_SFEDU
    DATA --> P_RGUPS
    DATA --> P_TUAPSE
    DATA --> P_TVGU

    P_RKSI --> CORE_PARSER
    P_DGTU --> CORE_PARSER
    P_IUBIP --> CORE_PARSER
    P_RINH --> CORE_PARSER
    P_SFEDU --> CORE_PARSER
    P_RGUPS --> CORE_PARSER
    P_TUAPSE --> CORE_PARSER
    P_TVGU --> CORE_PARSER

    SYNC --> CORE_PARSER
    SYNC --> P_RKSI
    SYNC --> P_DGTU
    SYNC --> P_IUBIP
    SYNC --> P_RINH
    SYNC --> P_SFEDU
    SYNC --> P_RGUPS
    SYNC --> P_TUAPSE
    SYNC --> P_TVGU
Loading

Подключение библиотек парсеров (Maven Packages)

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        maven {
            url = uri("https://maven.pkg.github.com/whatrushki/schedule")
            credentials {
                username = System.getenv("GITHUB_ACTOR")
                password = System.getenv("GITHUB_TOKEN")
            }
        }
    }
}

// build.gradle.kts
dependencies {
    implementation("app.what.schedule:core:1.3.15")
    implementation("app.what.schedule:rksi:1.3.15")
    implementation("app.what.schedule:dgtu:1.3.15")
    implementation("app.what.schedule:iubip:1.3.15")
    implementation("app.what.schedule:rinh:1.3.15")
    implementation("app.what.schedule:sfedu:1.3.15")
    implementation("app.what.schedule:rgups:1.3.15")
    implementation("app.what.schedule:rgups_tuapse:1.3.15")
    implementation("app.what.schedule:tvgu:1.3.15")
}

Сборка и запуск

# Клонирование репозитория
git clone https://github.com/whatrushki/schedule.git
cd schedule

# Сборка Android APK
./gradlew assembleDebug

# Запуск Desktop-приложения
./gradlew :desktopApp:run

# Запуск Web (Wasm) в dev-режиме
./gradlew :wasmApp:wasmJsBrowserDevelopmentRun

Обратная связь и участие

  • Ошибки и запросы функционала оформляются через GitHub Issues.
  • Официальные каналы коммуникации и вопросы разработки: Telegram.

© WHAT Technologies. Все права защищены. Лицензия MIT.

About

📚 Умное расписание для учебных заведений на Android

Topics

Resources

Stars

19 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages