<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: rainxchzed</title>
    <description>The latest articles on DEV Community by rainxchzed (@rainxchzed).</description>
    <link>https://dev.to/rainxchzed</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3641585%2Ffee30fa4-f2b4-4e79-9e95-96f75cc4bf29.jpeg</url>
      <title>DEV Community: rainxchzed</title>
      <link>https://dev.to/rainxchzed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rainxchzed"/>
    <language>en</language>
    <item>
      <title>How I built GitHub Store to 12,500 stars in 6 months — I started at 16</title>
      <dc:creator>rainxchzed</dc:creator>
      <pubDate>Sat, 09 May 2026 01:20:35 +0000</pubDate>
      <link>https://dev.to/rainxchzed/how-i-built-github-store-to-12500-stars-in-6-months-i-started-at-16-4c78</link>
      <guid>https://dev.to/rainxchzed/how-i-built-github-store-to-12500-stars-in-6-months-i-started-at-16-4c78</guid>
      <description>&lt;p&gt;Six months ago I was a 16-year-old in Uzbekistan trying to ship a small Android app I'd built. The Play Store process was so heavy for what the project was worth, I built an alternative instead.&lt;/p&gt;

&lt;p&gt;Six months later that alternative — GitHub Store — has 12,500+ stars, 250,000+ updates served, ships in 13 languages, runs on Android + Windows + macOS + Linux. I turned 17 a couple of weeks ago.&lt;/p&gt;

&lt;p&gt;This is the story. Including the part where I almost quit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Play Console wall
&lt;/h2&gt;

&lt;p&gt;I'd shipped apps to the Play Store before. Those felt worth it — real apps, real users, the friction was the cost of doing business.&lt;/p&gt;

&lt;p&gt;This time was different. I was working on Philipp Lackner's Mobile Dev Campus challenge. Built a small side project I was proud of. Wanted to publish it. Re-read the Play Console requirements and just stopped.&lt;/p&gt;

&lt;p&gt;$25 fee. Government ID. Address verification. 20 closed testers. 2-week minimum closed test. Wait. Maybe approved.&lt;/p&gt;

&lt;p&gt;A month of process. For a side project. The math wasn't there.&lt;/p&gt;

&lt;p&gt;GitHub already lets developers publish APKs in releases. So I figured: build a store on top of that.&lt;/p&gt;

&lt;p&gt;That gap was the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I didn't know
&lt;/h2&gt;

&lt;p&gt;Honest admission: when I started, I didn't know F-Droid or Obtainium existed. People told me about them later — after I'd shipped. If I'd known on day one, I probably wouldn't have built GitHub Store at all. I would've just installed Obtainium and moved on.&lt;/p&gt;

&lt;p&gt;Sometimes ignorance is a feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Kotlin Multiplatform
&lt;/h2&gt;

&lt;p&gt;Native Android dev for about two years before this. Kotlin was my language. Compose was my UI toolkit.&lt;/p&gt;

&lt;p&gt;Flutter would've meant Dart + new build system + new debugger. React Native would've meant JavaScript I didn't know. Tauri would've meant Rust I didn't know.&lt;/p&gt;

&lt;p&gt;KMP let me bring two years of Android straight into Desktop without changing language, IDE, or mental model. I picked it because I could ship faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 1-week MVP, no coding agents
&lt;/h2&gt;

&lt;p&gt;GitHub Store's first version shipped in a single week.&lt;/p&gt;

&lt;p&gt;Full focus. Skipped school. Skipped studies. Some nights I barely slept.&lt;/p&gt;

&lt;p&gt;Zero coding agents. No Cursor, no Copilot, no Claude Code. Just IntelliJ, the Compose Multiplatform docs, the Ktor docs, and my hands.&lt;/p&gt;

&lt;p&gt;What shipped:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Releases search via the public API&lt;/li&gt;
&lt;li&gt;Asset filter — APKs and Desktop installers, hide the noise&lt;/li&gt;
&lt;li&gt;Tap-to-install on Android via the system installer&lt;/li&gt;
&lt;li&gt;One UI codebase: Android + Windows + macOS + Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Crude. But real. It worked.&lt;/p&gt;

&lt;p&gt;I posted it on LinkedIn before it was even technically an MVP — the first real LinkedIn post I'd ever made. ~100 reactions, 5,000+ impressions, on a profile that had basically nothing on it before. Then I posted in the Kotlin Slack community a few days later.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trajectory
&lt;/h2&gt;

&lt;p&gt;I started on November 21, 2025. Built it private for a week. Made the repo public in late November. November 30 — first star.&lt;/p&gt;

&lt;p&gt;December 15: 100 stars.&lt;/p&gt;

&lt;p&gt;January 3: 2,500.&lt;/p&gt;

&lt;p&gt;I genuinely didn't understand what was happening. The growth was slow, then suddenly it wasn't. Made a LinkedIn post celebrating each milestone — those got more reactions than the launch did.&lt;/p&gt;

&lt;p&gt;The biggest amplifier in that window was &lt;a href="https://www.youtube.com/@howtomen" rel="noopener noreferrer"&gt;HowToMen&lt;/a&gt; — at around 2,000 stars, he featured GitHub Store in his &lt;em&gt;Top 12 App Stores Better than Play Store&lt;/em&gt; video. His audience is exactly who the app is for: privacy-aware Android users who already mistrust Play. The trajectory after that video looked different.&lt;/p&gt;

&lt;p&gt;The inevitable comparison: yes, I know about &lt;a href="https://github.com/ImranR98/Obtainium" rel="noopener noreferrer"&gt;Obtainium&lt;/a&gt;. I get asked "why not Obtainium?" every week. Obtainium is the lightweight power-user updater for repos you already know about. GitHub Store is the discovery-first store for people who don't know what to install yet — and it's cross-platform. Use Obtainium. Use GitHub Store. Use both. We built Obtainium import/export so libraries move between them in one tap.&lt;/p&gt;

&lt;h2&gt;
  
  
  The valley at 2-3k stars
&lt;/h2&gt;

&lt;p&gt;The part I almost cut from this essay.&lt;/p&gt;

&lt;p&gt;Around 2-3,000 stars I went strange. Heads-down for months. Product getting attention. People writing nice things. Issues piling up.&lt;/p&gt;

&lt;p&gt;And I started losing the plot.&lt;/p&gt;

&lt;p&gt;I'd open the repo and just stare. &lt;em&gt;Why am I doing this. Is anyone going to use this long-term. Is the star count just vanity. Am I spending my life on something that doesn't matter.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I talked to ChatGPT for hours during that period. One- or two-hour conversations. Not for code help — to think out loud. Friends my age weren't building products. The doubt didn't have anyone in my life shaped right to engage with it.&lt;/p&gt;

&lt;p&gt;What pulled me out wasn't an insight. It was specific user messages. A dev DMing to say their workflow had changed. A bug report starting "I love this app, but...". A maintainer claiming their repo and saying it was the first time their project had a real &lt;em&gt;store page&lt;/em&gt;. None of them knew I was second-guessing anything. They were just users using a thing.&lt;/p&gt;

&lt;p&gt;If you're building something: the valley is real. External success doesn't make you feel anything; it just sits there. Tangible feedback from real users is what helps. Make it easy for them to reach you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell 16-year-old me
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ship first, know your audience second.&lt;/strong&gt; I didn't research the audience before I shipped. The audience showed up — FOSS users who love tinkering, hate ads, hate tracking, want privacy. Knowing that landed me on every product decision afterward: open backend, no telemetry, donations rails, no dark patterns. Ship before you finish researching. The audience teaches you faster than your assumptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KMP works. Even on Desktop.&lt;/strong&gt; The cross-platform claim isn't marketing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distribution is a feature.&lt;/strong&gt; F-Droid, Obtainium config, Scoop, Winget, IzzyOnDroid — every channel I added was a product feature. Users who can't install you don't exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Talk to your users. Directly. Inside the app.&lt;/strong&gt; Release notes don't cut it. Most people don't read them — I've never opened "What's new" on a Play Store page in my life. So I built an in-app what's-new sheet (short, bullet-format) that pops up after every update, an announcements feed for surveys and security notes, a &lt;em&gt;Send feedback&lt;/em&gt; card with a diagnostics preview before you send, and a Discord. The first real survey I ran told me what 12,000 stars couldn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Localize early.&lt;/strong&gt; People will use your app worldwide if it's good and they can read it. The limiters are language and network. GitHub Store ships in 13 languages and runs through a backend proxy that survives the Great Firewall. That's why Chinese, Russian, and Arabic users are here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hardest part isn't the code.&lt;/strong&gt; Nobody warned me about the valley.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;A lot more coming. A new design that's substantially nicer than what's there today. Better Desktop support — potentially with the same auto-update story Android already has. UX 100x better than now.&lt;/p&gt;

&lt;p&gt;A paid tier eventually. One principle: GitHub Store charges only for features that cost us money to run. Storage, bandwidth, compute, monitoring. Anything that runs on your device stays free, forever. Backend is open source and self-hostable. Separate essay coming about why.&lt;/p&gt;

&lt;p&gt;If you've read this far — try it. Star it if it solves something for you. File an issue if it doesn't. If you're a dev whose project ships APKs or Desktop installers, claim your store page (free, soon). And if you're a teenager somewhere thinking about shipping a project: just start. The Play Store will wait. GitHub Releases is right there.&lt;/p&gt;

&lt;p&gt;— Usmon (&lt;a href="https://github.com/rainxchzed" rel="noopener noreferrer"&gt;@rainxchzed&lt;/a&gt;)&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github-store.org/" rel="noopener noreferrer"&gt;github-store.org&lt;/a&gt; · &lt;a href="https://github.com/OpenHub-Store/GitHub-Store" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://discord.github-store.org" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; · &lt;a href="https://github.com/sponsors/rainxchzed" rel="noopener noreferrer"&gt;Sponsor&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kotlin</category>
      <category>opensource</category>
      <category>android</category>
      <category>showdev</category>
    </item>
    <item>
      <title>GitHub Store reaches 1.9k in one month</title>
      <dc:creator>rainxchzed</dc:creator>
      <pubDate>Wed, 31 Dec 2025 05:43:58 +0000</pubDate>
      <link>https://dev.to/rainxchzed/github-store-reaches-19k-in-one-month-4l8a</link>
      <guid>https://dev.to/rainxchzed/github-store-reaches-19k-in-one-month-4l8a</guid>
      <description>&lt;p&gt;Ending the year with a milestone: GitHub Store after 1 month 🚀&lt;/p&gt;

&lt;p&gt;Exactly one month ago, on 31st November, I shipped the very first version of GitHub Store.&lt;br&gt;
Today, on the last day of the year, the app has already reached 18k+ users and 1.9k+ stars on GitHub.&lt;/p&gt;

&lt;p&gt;For a 16-year-old dev who just wanted to build a better way to discover and manage GitHub apps, this feels surreal.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is GitHub Store?
&lt;/h2&gt;

&lt;p&gt;GitHub Store is an open source app that helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discover interesting GitHub repositories and apps&lt;/li&gt;
&lt;li&gt;Track them in one place&lt;/li&gt;
&lt;li&gt;Stay on top of updates more easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/rainxchzed/Github-Store" rel="noopener noreferrer"&gt;https://github.com/rainxchzed/Github-Store&lt;/a&gt;&lt;br&gt;
​&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing GitHub Store 1.5.0
&lt;/h2&gt;

&lt;p&gt;To close the year, a new version is out: 1.5.0.&lt;br&gt;
Here’s what changed, very briefly:&lt;/p&gt;

&lt;h3&gt;
  
  
  🌍 Go global: Localization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;App UI is now localized into English, French, Chinese, Japanese, Spanish, and Russian.&lt;/li&gt;
&lt;li&gt;README and docs now support localized variants so more developers can read about the project in their own language.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔎 Better discovery and trending
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;New programming language filter in search to quickly narrow down repos by tech stack.&lt;/li&gt;
&lt;li&gt;Trending repositories are now automated with improved caching and fetching logic, so the feed stays fresh and responsive.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ UX, structure, and polish
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;README fetching in the details screen is now concurrent, making it feel noticeably snappier.&lt;/li&gt;
&lt;li&gt;Android now uses a monochrome launcher icon, fitting better with modern system theming.&lt;/li&gt;
&lt;li&gt;Fixed text truncation in home filter chips and addressed several small UI/UX issues.&lt;/li&gt;
&lt;li&gt;Restructured packages and core data services for a cleaner architecture and easier maintenance going forward.
​
Lessons from the first month
This first month of GitHub Store taught a lot about:&lt;/li&gt;
&lt;li&gt;Shipping quickly, then iterating based on real feedback&lt;/li&gt;
&lt;li&gt;Investing early in DX and UX instead of only features&lt;/li&gt;
&lt;li&gt;How incredibly supportive the open source community can be when you build in public&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s next?&lt;/strong&gt;&lt;br&gt;
The plan for 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deeper search and filtering features&lt;/li&gt;
&lt;li&gt;Smarter update tracking&lt;/li&gt;
&lt;li&gt;More languages and better docs&lt;/li&gt;
&lt;li&gt;And likely more platform support and integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this sounds interesting to you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ Star the repo: &lt;a href="https://github.com/rainxchzed/Github-Store" rel="noopener noreferrer"&gt;https://github.com/rainxchzed/Github-Store&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🧪 Try the app and open issues/ideas&lt;/li&gt;
&lt;li&gt;💬 Share feedback — especially around UX, localization, and search&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to everyone who installed, starred, or talked about GitHub Store in its very first month. This is just the beginning. 💙&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>github</category>
      <category>opensource</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I built a “Play Store for GitHub releases” with Kotlin Multiplatform</title>
      <dc:creator>rainxchzed</dc:creator>
      <pubDate>Tue, 02 Dec 2025 15:20:29 +0000</pubDate>
      <link>https://dev.to/rainxchzed/i-built-a-play-store-for-github-releases-with-kotlin-multiplatform-2c1d</link>
      <guid>https://dev.to/rainxchzed/i-built-a-play-store-for-github-releases-with-kotlin-multiplatform-2c1d</guid>
      <description>&lt;p&gt;As a Kotlin dev, most of the tools used daily live on GitHub, but installing them is still surprisingly annoying.​&lt;br&gt;
You click through repos, open the Releases tab, scroll past source archives, guess which installer matches your platform, and repeat this for every project.&lt;/p&gt;

&lt;p&gt;So a few weeks ago, a simple idea got stuck in my head:&lt;br&gt;
What if there was a “Play Store” UI on top of GitHub releases?&lt;/p&gt;

&lt;p&gt;What I wanted to fix&lt;br&gt;
The problems were pretty consistent across projects:&lt;/p&gt;

&lt;p&gt;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.​&lt;/p&gt;

&lt;p&gt;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”.&lt;/p&gt;

&lt;p&gt;Cross‑platform is extra work. If you use multiple platforms (Android + Linux/Windows/macOS), you repeat the same friction everywhere.&lt;/p&gt;

&lt;p&gt;I wanted something that feels like an app store, but powered 100% by public GitHub repos and releases.&lt;/p&gt;

&lt;p&gt;Meet Github Store&lt;br&gt;
Github Store is a Kotlin Multiplatform app (Android + Desktop) that turns GitHub releases into a clean, app‑store style experience.​&lt;/p&gt;

&lt;p&gt;It only shows repositories that actually ship installable assets (APK, EXE, DMG, DEB, etc.).&lt;/p&gt;

&lt;p&gt;It detects your current platform and surfaces the best matching installer.&lt;/p&gt;

&lt;p&gt;It always installs from the latest published GitHub release and highlights the changelog so you see what changed.&lt;/p&gt;

&lt;p&gt;Under the hood it uses the public GitHub Search and Releases APIs, no private indexing or manual curation.​&lt;/p&gt;

&lt;p&gt;How it works (high level)&lt;br&gt;
The core flow is:&lt;/p&gt;

&lt;p&gt;Search: Github Store queries GitHub’s /search/repositories endpoint with platform‑aware queries and filters out archived or low‑signal repos.​&lt;/p&gt;

&lt;p&gt;Release check: For each candidate repo it calls /repos/{owner}/{repo}/releases/latest and looks for platform‑specific file extensions in the assets array.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;If a repo only ships source code archives or has a draft/prerelease as the latest release, it is simply not shown.&lt;/p&gt;

&lt;p&gt;Tech stack and architecture&lt;br&gt;
Because this is also a learning/portfolio project, the stack is intentionally modern:&lt;/p&gt;

&lt;p&gt;Kotlin Multiplatform shared core for networking, domain logic, and presentation state.​&lt;/p&gt;

&lt;p&gt;Compose Multiplatform for UI on Android and desktop (Material 3, icons, resources).​&lt;/p&gt;

&lt;p&gt;Ktor 3 + Kotlinx Serialization for GitHub API calls, with streaming downloads for installers.&lt;/p&gt;

&lt;p&gt;Koin for dependency injection across platforms.&lt;/p&gt;

&lt;p&gt;GitHub OAuth (device code flow) for authentication so users get their own 5,000 req/hour rate limit.&lt;/p&gt;

&lt;p&gt;Markdown rendering for READMEs and release notes, plus image loading with Coil.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Why Kotlin Multiplatform?&lt;br&gt;
This project is exactly the type of app that benefits from KMP:&lt;/p&gt;

&lt;p&gt;The core logic (search, filtering, scoring, releases, installer selection) is 100% shared, so behavior is identical on Android and desktop.​&lt;/p&gt;

&lt;p&gt;The UI is mostly shared via Compose Multiplatform, but platform‑specific bits (file pickers, opening installers, download directories) live in the platform modules.&lt;/p&gt;

&lt;p&gt;Adding another platform later (for example, another desktop target) mostly means wiring platform‑specific installers and packaging, not rewriting the app.&lt;/p&gt;

&lt;p&gt;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.​&lt;/p&gt;

&lt;p&gt;What’s next&lt;br&gt;
Short term, the focus is on:&lt;/p&gt;

&lt;p&gt;Improving discovery: better scoring based on topics and languages, plus curated sections for “Popular”, “Recently updated”, and “New.”&lt;/p&gt;

&lt;p&gt;Sharpening platform filters so Android devs see APK‑heavy apps and desktop users see .msi/.dmg/.deb apps first.&lt;/p&gt;

&lt;p&gt;Polishing the install UX (progress, error messages, retry, etc.).&lt;/p&gt;

&lt;p&gt;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.​&lt;/p&gt;

&lt;p&gt;Try it and give feedback&lt;br&gt;
If you:&lt;/p&gt;

&lt;p&gt;ship your own apps via GitHub releases, or&lt;/p&gt;

&lt;p&gt;love discovering open‑source tools&lt;/p&gt;

&lt;p&gt;…you are exactly the audience this was built for.&lt;/p&gt;

&lt;p&gt;Repo and installers (Android + desktop):&lt;br&gt;
👉 &lt;a href="https://github.com/rainxchzed/Github-Store" rel="noopener noreferrer"&gt;https://github.com/rainxchzed/Github-Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>kotlinmultiplatform</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
