How wxriw/ucas-sign-in works
果壳签到 is a native multi-platform client for UCAS Qingxin Classroom. The main workflow is account login, course/schedule retrieval, course and attendance inspection, then manual or automatic sign-in using a time-synchronized QR code; users can also configure reminders and browse cached schedules offline. Windows and Android share the .NET core, while Apple has a separate Swift implementation. The README documents additional capabilities such as course preferences, widgets, demo mode, and updates; links for unsampled subsystems are limited to documented behavior and supported paths.
Main entry points: AccountCoordinator.cs Account coordinator · AppModel.swift Apple app model · ViewModels/MainViewModel.cs Windows view model · ViewModels/MainViewModel.cs Android view model
Components 25
Platform clients
- Apple interface
apps/apple/UCASSignIn/UI/RootView.swift - Windows interface
apps/windows/UCASSignIn.Windows/MainWindow.xaml.cs - Android interface
apps/android/UCASSignIn.Android/Fragments/MainPageFragment.cs - Apple widget
apps/apple/UCASSignInWidget/UCASSignInWidget.swift
Application coordination
- Apple app model
apps/apple/UCASSignIn/UI/AppModel.swift - Account coordinator
packages/dotnet/UCASSignIn.Core/Accounts/AccountCoordinator.cs - Windows view model
apps/windows/UCASSignIn.Windows/ViewModels/MainViewModel.cs - Android view model
apps/android/UCASSignIn.Android/ViewModels/MainViewModel.cs - Android auto sign
apps/android/UCASSignIn.Android/Services/AndroidAutoSignService.cs
School and domain
- Apple school client
apps/apple/UCASSignIn/Core/QingxinService.swift - Shared school client
packages/dotnet/UCASSignIn.Core/Networking/SchoolClient.cs - Response parser
packages/dotnet/UCASSignIn.Core/Networking/ResponseParser.cs - Course and attendance
packages/dotnet/UCASSignIn.Core/Models/Models.cs - Schedule logic
packages/dotnet/UCASSignIn.Core/Courses/CourseSchedule.cs
Local state and services
- Apple account store
apps/apple/UCASSignIn/Core/AccountStore.swift - Core file stores
packages/dotnet/UCASSignIn.Core/Accounts/FileStores.cs - Platform services
apps/windows/UCASSignIn.Windows/Services/PlatformServices.cs - Android account store
apps/android/UCASSignIn.Android/Services/AndroidAccountStore.cs - Reminder scheduling
packages/dotnet/UCASSignIn.Core/Accounts/AccountCoordinator.Reminders.cs - Widget snapshot client
apps/apple/UCASSignIn/UI/AccountClients.swift - Release checker
packages/dotnet/UCASSignIn.Core/Updates/GitHubReleaseChecker.cs
Other components
- Student
- Qingxin Classroom
- Apple Keychain
- GitHub releases
Connections 29
- Student → Apple interface: uses
- Student → Windows interface: uses
- Student → Android interface: uses
- Apple interface → Apple app model: actions
- Windows interface → Windows view model: actions
- Android interface → Android view model: actions
- Apple app model → Apple school client: requests
- Apple school client → Qingxin Classroom: HTTPS requests
- Account coordinator → Shared school client: calls
- Shared school client → Qingxin Classroom: HTTPS requests
- Shared school client → Response parser: parses responses
- Response parser → Course and attendance: creates models
- Account coordinator → Course and attendance: manages
- Account coordinator → Schedule logic: uses schedule logic
- Windows view model → Account coordinator: uses core
- Android view model → Account coordinator: uses core
- Apple app model → Apple account store: loads and saves
- Apple account store → Apple Keychain: secures credentials
- Account coordinator → Core file stores: persists state
- Windows view model → Platform services: uses services
- Android view model → Android account store: stores accounts
- Android interface → Android auto sign: starts service
- Android auto sign → Android view model: ticks sign-in
- Account coordinator → Reminder scheduling: replaces reminders
- Windows view model → Platform services: schedules reminders
- Apple app model → Widget snapshot client: publishes snapshot
- Widget snapshot client → Apple widget: reloads timelines
- Apple app model → Release checker: checks updates
- Release checker → GitHub releases: queries releases