Skip to content

Repository files navigation


Project Icon

SCHEDULE

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



   

Releases   Web   GitHub Packages



О проекте

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

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

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

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

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

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

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

  • Еженедельный мониторинг стабильности
    Автоматизированный CI-конвейер проверки доступности парсеров с независимой матрицей исполнения и мгновенными алертами в Telegram.

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

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

    P_RKSI --> CORE_PARSER
    P_DGTU --> CORE_PARSER
    P_IUBIP --> CORE_PARSER
    P_RINH --> CORE_PARSER

    SYNC --> CORE_PARSER
    SYNC --> P_RKSI
    SYNC --> P_DGTU
    SYNC --> P_IUBIP
    SYNC --> P_RINH
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.4")
    implementation("app.what.schedule:rksi:1.3.4")
    implementation("app.what.schedule:dgtu:1.3.4")
    implementation("app.what.schedule:iubip:1.3.4")
    implementation("app.what.schedule:rinh:1.3.4")
    implementation("app.what.schedule:sfedu:1.3.4")
}

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

# Клонирование репозитория
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

16 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages