How 87kangsw/gittime works
GitTime is an iOS GitHub activity client. Users pass through splash authentication (or trial access) into the tabbed app, where they can inspect contribution graphs and events, browse trending repositories and developers, compare buddies’ contributions, and manage settings. Feature controllers bind user actions and rendered state to ReactorKit view models. The repository also has language discovery and follow-user selection flows. The sampled code confirms the login service’s OAuth, token, and credential handling; feature-to-service wiring is not shown in the excerpts, so those links are omitted.
Main entry points: AuthService.swift Auth service · SplashViewController.swift Splash screen · BuddyViewController.swift Buddy contributions · LoginViewController.swift Login screen
Components 25
App navigation
- Splash screen
GitTime/Sources/ViewControllers/Splash/SplashViewController.swift - Login screen
GitTime/Sources/ViewControllers/Login/LoginViewController.swift - Tab navigation
GitTime/Sources/ViewControllers/Base/MainTabBarController.swift
GitHub features
- Activity view
GitTime/Sources/ViewControllers/Activity/ActivityViewController.swift - Trending view
GitTime/Sources/ViewControllers/Trend/TrendViewController.swift - Buddy contributions
GitTime/Sources/ViewControllers/Buddy/BuddyViewController.swift - Follow users
GitTime/Sources/ViewControllers/Follow/FollowViewController.swift - Language discovery
GitTime/Sources/ViewControllers/Trend/LanguageList/LanguageListViewController.swift - Settings
GitTime/Sources/ViewControllers/Setting/SettingViewController.swift - Activity reactor
GitTime/Sources/ViewControllers/Activity/ActivityViewReactor.swift - Trend reactor
GitTime/Sources/ViewControllers/Trend/TrendViewReactor.swift - Buddy reactor
GitTime/Sources/ViewControllers/Buddy/BuddyViewReactor.swift - Follow reactor
GitTime/Sources/ViewControllers/Follow/FollowViewReactor.swift - Language reactor
GitTime/Sources/ViewControllers/Trend/LanguageList/LanguageListViewReactor.swift
Services and data
- Token keychain
GitTime/Sources/Services/KeychainService.swift - Activity service
GitTime/Sources/Services/ActivityService.swift - GitHub service
GitTime/Sources/Services/GitHubService.swift - Realm persistence
GitTime/Sources/Services/RealmService.swift
Authentication
- Login reactor
GitTime/Sources/ViewControllers/Login/LoginViewReactor.swift - Auth service
GitTime/Sources/Services/AuthService.swift - Login API provider
GitTime/Sources/Network/GitTimeProvider.swift - GitHub login API
GitTime/Sources/Network/GitHubLoginAPI.swift
Other components
- User
- GitHub
- Firebase Auth
Connections 22
- User → Splash screen: opens app
- Splash screen → Login screen: routes unauthenticated
- Login screen → Login reactor: sends login action
- Login reactor → Auth service: requests authorization
- Auth service → GitHub: opens OAuth session
- Auth service → Login API provider: requests token
- Login API provider → GitHub login API: dispatches request
- Auth service → Token keychain: loads token
- Auth service → Token keychain: removes token
- Auth service → Firebase Auth: signs in with credential
- Splash screen → Tab navigation: routes authenticated
- User → Activity view: views activity
- Activity view → Activity reactor: sends first-load action
- User → Trending view: browses trends
- Trending view → Trend reactor: dispatches actions
- User → Buddy contributions: views buddies
- Buddy contributions → Buddy reactor: dispatches actions
- Buddy contributions → Follow users: opens follow picker
- Follow users → Follow reactor: dispatches refresh
- User → Language discovery: searches languages
- Language discovery → Language reactor: dispatches search
- User → Settings: manages settings