As a Kotlin dev, most of the tools used daily live on GitHub, but installing them is still surprisingly annoying.
You click through repos, open the Releases tab, scroll past source archives, guess which installer matches your platform, and repeat this for every project.
So a few weeks ago, a simple idea got stuck in my head:
What if there was a “Play Store” UI on top of GitHub releases?
What I wanted to fix
The problems were pretty consistent across projects:
Discovery is bad. There is a lot of amazing desktop and Android software on GitHub, but it is hard to find unless someone tweets or blogs about it.
Installs are manual. Every app has a slightly different release page, asset naming, and README, so you have to think every time instead of just “Install”.
Cross‑platform is extra work. If you use multiple platforms (Android + Linux/Windows/macOS), you repeat the same friction everywhere.
I wanted something that feels like an app store, but powered 100% by public GitHub repos and releases.
Meet Github Store
Github Store is a Kotlin Multiplatform app (Android + Desktop) that turns GitHub releases into a clean, app‑store style experience.
It only shows repositories that actually ship installable assets (APK, EXE, DMG, DEB, etc.).
It detects your current platform and surfaces the best matching installer.
It always installs from the latest published GitHub release and highlights the changelog so you see what changed.
Under the hood it uses the public GitHub Search and Releases APIs, no private indexing or manual curation.
How it works (high level)
The core flow is:
Search: Github Store queries GitHub’s /search/repositories endpoint with platform‑aware queries and filters out archived or low‑signal repos.
Release check: For each candidate repo it calls /repos/{owner}/{repo}/releases/latest and looks for platform‑specific file extensions in the assets array.
Details screen: If there is at least one valid installer, the app loads repo metadata, latest release info, and README and renders it as a single details screen.
Install flow: When the user taps “Install latest”, Github Store picks the right asset for the current platform, downloads it, and hands off to the OS installer.
If a repo only ships source code archives or has a draft/prerelease as the latest release, it is simply not shown.
Tech stack and architecture
Because this is also a learning/portfolio project, the stack is intentionally modern:
Kotlin Multiplatform shared core for networking, domain logic, and presentation state.
Compose Multiplatform for UI on Android and desktop (Material 3, icons, resources).
Ktor 3 + Kotlinx Serialization for GitHub API calls, with streaming downloads for installers.
Koin for dependency injection across platforms.
GitHub OAuth (device code flow) for authentication so users get their own 5,000 req/hour rate limit.
Markdown rendering for READMEs and release notes, plus image loading with Coil.
On top of that there is a simple shared navigation graph and per‑platform “installers” that know how to open an APK on Android or a .deb/.msi/.dmg on desktop.
Why Kotlin Multiplatform?
This project is exactly the type of app that benefits from KMP:
The core logic (search, filtering, scoring, releases, installer selection) is 100% shared, so behavior is identical on Android and desktop.
The UI is mostly shared via Compose Multiplatform, but platform‑specific bits (file pickers, opening installers, download directories) live in the platform modules.
Adding another platform later (for example, another desktop target) mostly means wiring platform‑specific installers and packaging, not rewriting the app.
Since KMP is now stable and officially supported for Android use cases, it felt like the right time to build a “real” product, not just a sample.
What’s next
Short term, the focus is on:
Improving discovery: better scoring based on topics and languages, plus curated sections for “Popular”, “Recently updated”, and “New.”
Sharpening platform filters so Android devs see APK‑heavy apps and desktop users see .msi/.dmg/.deb apps first.
Polishing the install UX (progress, error messages, retry, etc.).
Medium term, the plan is to ship native-feeling distribution: Mac App Store, Microsoft Store, and a Linux store (Flatpak/Flathub), all still powered by the same KMP core and GitHub releases as the source of truth.
Try it and give feedback
If you:
ship your own apps via GitHub releases, or
love discovering open‑source tools
…you are exactly the audience this was built for.
Repo and installers (Android + desktop):
👉 https://github.com/rainxchzed/Github-Store
If you try it, star it, or break it, any feedback is welcome — especially around edge cases in GitHub releases, installer formats, and multi‑platform packaging.
Top comments (0)