A modern Android class schedule app built with Kotlin & Jetpack Compose.
Screenshots coming soon.
- Schedule Management (课程表管理) — Add, edit, and delete courses with an intuitive UI
- Excel Import (Excel 导入) — Import course schedules from Excel/CSV files
- WebView Import (WebView 教务系统导入) — Import courses from educational portals via WebView
- Home Screen Widget (桌面小组件) — Home screen widget showing today's schedule
- Class Reminders (课前提醒) — Alarm notifications before class starts
- Dark Mode / Material You (暗色模式 / Material You) — Dynamic theming with dark mode support
- Backup & Restore (数据备份恢复) — Export and import your data
- GlowCode Management (GlowCode 管理) — Parse and manage course codes
| Technology | Version |
|---|---|
| Kotlin | 2.3.20 |
| Compose BOM | 2026.03.01 |
| Material 3 | — |
| Room | 2.8.4 |
| Navigation 3 | 1.0.1 |
| Jetpack Glance | 1.1.0 |
| Coroutines | 1.10.2 |
| AGP | 9.0.1 |
- Pattern: MVVM + Repository
- Modules: Single
:appmodule - Persistence: Room database
- UI: Jetpack Compose with Material 3
- Navigation: Navigation 3
graph TD
MainActivity --> MainNavigation
MainNavigation --> MainScreen
MainScreen --> HomeTab
MainScreen --> TimetableTab
MainScreen --> TodoTab
MainScreen --> SettingsTab
HomeTab --> MainScreenViewModel
TimetableTab --> MainScreenViewModel
MainScreenViewModel --> DataRepository
DataRepository --> Room[(Room DB)]
- Android Studio (latest stable)
- JDK 17+
- Android SDK with API 36
git clone https://github.com/OrionArch/GlowSchedule.git
cd GlowSchedule./gradlew assembleDebugOpen the project in Android Studio and run on a device or emulator running Android 7.0 (API 24) or higher.
app/src/main/java/com/example/schday/
├── MainActivity.kt
├── Navigation.kt
├── NavigationKeys.kt
├── data/
│ ├── AppDatabase.kt
│ ├── DataRepository.kt
│ ├── dao/
│ │ └── AppDaos.kt
│ └── entity/
│ └── Entities.kt
├── parser/
│ ├── BackupRestore.kt
│ ├── ExcelParser.kt
│ ├── GlowCodeManager.kt
│ └── JSBridge.kt
├── scheduler/
│ └── ClassAlarmReceiver.kt
├── theme/
│ ├── Color.kt
│ ├── Theme.kt
│ └── Type.kt
├── ui/
│ ├── main/
│ │ ├── MainScreen.kt
│ │ └── MainScreenViewModel.kt
│ └── screens/
│ ├── edit/
│ │ └── AddEditCourseScreen.kt
│ ├── home/
│ │ └── HomeTab.kt
│ ├── import/
│ │ └── ImportCoursesScreen.kt
│ ├── settings/
│ │ └── SettingsTab.kt
│ ├── timetable/
│ │ └── TimetableTab.kt
│ └── todo/
│ └── TodoTab.kt
├── utils/
│ └── DateUtils.kt
└── widget/
└── ScheduleWidget.kt
# Unit tests
./gradlew test
# Instrumented tests
./gradlew connectedAndroidTestWe welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
Kotlin (JetBrains) | Jetpack Compose | Material 3 | Room | Navigation 3 | Jetpack Glance | AndroidX | Gradle | Kotlin Coroutines | ProGuard