How restarhalf/chrnova works
Chrnova is a Kotlin Multiplatform campus timetable app whose core flow is viewing locally stored schedules and syncing academic records from campus systems. The graph includes the documented exam, grades, PE, announcements, evaluation, paper-sharing, course-selection, reminders, widgets, and personalization capabilities. README documentation supports the broad layers and feature branches; sampled source confirms local Room storage, PE network behavior, Android course-selection calls, and reminder scheduling. Several feature-to-screen links are documented capabilities rather than inspected call sites.
Main entry points: ui Feature screens · RoomCourseRepository.kt Room repositories · CourseSelectionUseCase.kt Course selection · CourseSelectionService.kt Background selector
Components 23
App experience
- Compose app
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/AppRoot.kt - Feature screens
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/ui - Settings and background
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/impl/SettingsPortImpl.kt
Academic data
- Schedule logic
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/domain/usecase/BuildScheduleUiStateUseCase.kt - Academic sync
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/domain/usecase/RunSyncUseCase.kt - Academic adapter
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/impl/AcademicPortImpl.kt - Timetable adapter
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/impl/TimetablePortImpl.kt - Exams and grades
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/domain/usecase/FetchExaminationsUseCase.kt - JWXT gateway
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/remote/JwxtGateway.kt
Campus services
- Campus systems
- PE services
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/remote/PEClient.kt - Announcements
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/remote/AnnouncementApi.kt - Course evaluation
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/remote/CourseEvaluationApi.kt - Paper sharing
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/remote/PapersApi.kt - Course selection
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/domain/usecase/CourseSelectionUseCase.kt
Platform features
- Background selector
composeApp/src/androidMain/kotlin/restarhalf/stellar/schedule/CourseSelectionService.kt - Reminder scheduling
composeApp/src/androidMain/kotlin/restarhalf/stellar/schedule/reminder/ReminderRescheduleWorker.kt - Schedule widgets
composeApp/src/androidMain/kotlin/restarhalf/stellar/schedule/widget/ScheduleWidgets.kt - App logging
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/core/log/AppLogger.kt
Local state
- Room database
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/local/AppDatabase.kt - Room repositories
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/repository/RoomCourseRepository.kt - Settings store
composeApp/src/commonMain/kotlin/restarhalf/stellar/schedule/data/local/mmkv/MmkvSettings.kt
Other components
- Student
Connections 29
- Student → Compose app: opens
- Compose app → Feature screens: renders
- Feature screens → Schedule logic: requests schedule
- Schedule logic → Timetable adapter: loads timetable
- Timetable adapter → Room repositories: reads and writes
- Room repositories → Room database: queries
- Feature screens → Academic sync: starts sync
- Academic sync → Academic adapter: requests records
- Academic adapter → JWXT gateway: uses gateway
- JWXT gateway → Campus systems: fetches records
- Exams and grades → Room repositories: reads and writes
- Feature screens → Exams and grades: views records
- Feature screens → PE services: requests PE data
- PE services → Campus systems: sends requests
- Feature screens → Announcements: loads notices
- Announcements → Campus systems: fetches notices
- Feature screens → Course evaluation: submits evaluations
- Course evaluation → Campus systems: proxies requests
- Feature screens → Paper sharing: manages papers
- Paper sharing → Campus systems: uploads and downloads
- Feature screens → Course selection: starts selection
- Background selector → Course selection: submits attempts
- Course selection → Campus systems: requests enrollment
- Feature screens → Reminder scheduling: configures reminders
- Reminder scheduling → Room repositories: loads schedule data
- Schedule widgets → Room repositories: loads timetable
- Feature screens → Settings and background: updates preferences
- Settings and background → Settings store: persists settings
- Background selector → App logging: records events