44
55GitHub Store is a cross-platform app store for GitHub releases, built with ** Kotlin Multiplatform (KMP)** and ** Compose Multiplatform** . Targets ** Android** (min API 26) and ** Desktop** (Windows, macOS, Linux via JVM).
66
7- Package: ` zed.rainxch.githubstore `
7+ Package: ` zed.rainxch.githubstore ` | Version: 1.6.2 (code 13) | Target SDK: 36
88
99## Build & Run Commands
1010
@@ -45,8 +45,8 @@ feature/
4545 dev-profile/ # Developer/user profile display
4646 favourites/ # Saved favorite repositories (presentation-only)
4747 home/ # Main discovery screen (trending, hot, popular)
48+ profile/ # User profile, settings, appearance, proxy, Shizuku installer
4849 search/ # Repository search with filters
49- settings/ # App settings (theme, account, appearance)
5050 starred/ # Starred repositories (presentation-only)
5151build-logic/convention/ # Custom Gradle convention plugins
5252```
@@ -86,9 +86,9 @@ class XViewModel : ViewModel() {
8686Type-safe navigation using ` @Serializable ` sealed interface ` GithubStoreGraph ` :
8787
8888```
89- HomeScreen, SearchScreen, AuthenticationScreen, SettingsScreen ,
90- FavouritesScreen, StarredReposScreen, AppsScreen
91- DetailsScreen(repositoryId, owner, repo)
89+ HomeScreen, SearchScreen, AuthenticationScreen, ProfileScreen ,
90+ FavouritesScreen, StarredReposScreen, AppsScreen, SponsorScreen
91+ DetailsScreen(repositoryId, owner, repo, isComingFromUpdate )
9292DeveloperProfileScreen(username)
9393```
9494
@@ -102,26 +102,29 @@ Routes defined in `composeApp/.../app/navigation/GithubStoreGraph.kt`, wired in
102102
103103| Module | Purpose | Key Contents |
104104| --------| ---------| --------------|
105- | ` core/domain ` | Shared contracts | Repository interfaces (` FavouritesRepository ` , ` StarredRepository ` , ` InstalledAppsRepository ` , ` ThemesRepository ` ), models (` GithubRepoSummary ` , ` GithubRelease ` , ` InstalledApp ` , ` ProxyConfig ` ), system interfaces (` Downloader ` , ` Installer ` , ` PackageMonitor ` ) |
106- | ` core/data ` | Shared implementations | ` HttpClientFactory ` (Ktor + interceptors), ` AppDatabase ` (Room), ` ProxyManager ` , ` TokenStore ` , ` LocalizationManager ` , platform-specific clients (OkHttp for Android, CIO for Desktop) |
107- | ` core/presentation ` | Shared UI | ` GithubStoreTheme ` (Material 3), reusable components (` RepositoryCard ` , ` GithubStoreButton ` ), formatting utils |
105+ | ` core/domain ` | Shared contracts | Repository interfaces (` FavouritesRepository ` , ` StarredRepository ` , ` InstalledAppsRepository ` , ` ThemesRepository ` , ` ProxyRepository ` , ` RateLimitRepository ` ), models (` GithubRepoSummary ` , ` GithubRelease ` , ` InstalledApp ` , ` ProxyConfig ` , ` InstallerType ` , ` ShizukuAvailability ` ), system interfaces (` Installer ` , ` InstallerInfoExtractor ` , ` InstallerStatusProvider ` , ` PackageMonitor ` ) |
106+ | ` core/data ` | Shared implementations | ` HttpClientFactory ` (Ktor + interceptors), ` AppDatabase ` (Room), ` ProxyManager ` , ` TokenStore ` , ` LocalizationManager ` , platform-specific clients (OkHttp for Android, CIO for Desktop), Shizuku integration (Android: ` ShizukuServiceManager ` , ` ShizukuInstallerWrapper ` , ` ShizukuInstallerServiceImpl ` , ` AndroidInstallerStatusProvider ` ; Desktop: ` DesktopInstallerStatusProvider ` ) |
107+ | ` core/presentation ` | Shared UI | ` GithubStoreTheme ` (Material 3), reusable components (` RepositoryCard ` , ` GithubStoreButton ` ), formatting utils, localized strings (11 languages) |
108108
109109## Tech Stack
110110
111111| Area | Library | Version |
112112| ------| ---------| ---------|
113- | Language | Kotlin | 2.3.0 |
114- | UI | Compose Multiplatform | 1.9.0-beta01 |
115- | HTTP | Ktor | 3.2.3 |
116- | Database | Room | 2.7.2 |
117- | DI | Koin | 4.1.0 |
118- | Serialization | Kotlinx Serialization | 1.9 .0 |
119- | Preferences | DataStore | 1.1.7 |
120- | Image Loading | Landscapist (Coil3) | 2.9.1 |
113+ | Language | Kotlin | 2.3.10 |
114+ | UI | Compose Multiplatform | 1.10.1 |
115+ | HTTP | Ktor | 3.4.0 |
116+ | Database | Room | 2.8.4 |
117+ | DI | Koin | 4.1.1 |
118+ | Serialization | Kotlinx Serialization | 1.10 .0 |
119+ | Preferences | DataStore | 1.2.0 |
120+ | Image Loading | Landscapist (Coil3) | 2.9.5 |
121121| Logging | Kermit | 2.0.8 |
122- | Permissions | MOKO Permissions | 0.19.1 |
123- | Navigation | Navigation Compose | 2.9.1 |
124- | Markdown | Multiplatform Markdown Renderer | 0.39.1 |
122+ | Permissions | MOKO Permissions | 0.20.1 |
123+ | Navigation | Navigation Compose | 2.9.2 |
124+ | Markdown | Multiplatform Markdown Renderer | 0.39.2 |
125+ | Shizuku | Shizuku API | 13.1.5 |
126+ | Background Work | WorkManager | 2.11.1 |
127+ | Date/Time | Kotlinx Datetime | 0.7.1 |
125128
126129All versions managed in ` gradle/libs.versions.toml ` (Version Catalog).
127130
@@ -151,7 +154,8 @@ Custom Gradle plugins in `build-logic/convention/` standardize module setup:
151154
152155## Key Configuration
153156
154- - ** GitHub OAuth:** Set ` GITHUB_CLIENT_ID ` in ` local.properties ` . Callback URL: ` githubstore://callback `
157+ - ** GitHub OAuth:** Set ` GITHUB_CLIENT_ID ` in ` local.properties ` . Callback URL: ` githubstore://callback ` . Deep link: ` githubstore://repo `
158+ - ** Shizuku (Android):** Optional silent install via ` ShizukuProvider ` (registered in AndroidManifest). Requires Shizuku app running with ADB or root. AIDL service passes APK via ` ParcelFileDescriptor ` to ` pm install -S ` . Falls back to standard installer on failure.
155159- ** Gradle properties:** Config cache enabled, build cache enabled, 4GB Gradle heap, 3GB Kotlin daemon heap
156160- ** Code style:** Official Kotlin style (` kotlin.code.style=official ` )
157161
0 commit comments