Skip to content

Commit a3e63a0

Browse files
authored
Merge branch 'main' into multi-module
2 parents 4095805 + 58fd809 commit a3e63a0

6 files changed

Lines changed: 1916 additions & 1768 deletions

File tree

README.md

Lines changed: 88 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<img src="https://img.shields.io/github/stars/rainxchzed/Github-Store?color=ffff00&style=for-the-badge&labelColor=a1a116&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHRpdGxlPnN0YXI8L3RpdGxlPjxwYXRoIGQ9Ik0xMiwxNy4yN0wxOC4xOCwyMUwxNi41NCwxMy45N0wyMiw5LjI0TDE0LjgxLDguNjJMMTIsMkw5LjE5LDguNjJMMiw5LjI0TDcuNDUsMTMuOTdMNS44MiwyMUwxMiwxNy4yN1oiIGZpbGw9IndoaXRlIiAvPjwvc3ZnPg=="/>
2727
</a>
2828

29-
<img src="https://img.shields.io/badge/45K+-Users-8ce2ff?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHRpdGxlPmFjY291bnQtZ3JvdXA8L3RpdGxlPjxwYXRoIGQ9Ik0xMiwxMi43NUM3LDEyLjc1IDMsMTMuMzUgMywxNi4yNVYxOEgyMVYxNi4yNUMyMSwxMy4zNSAxNywxMi43NSAxMiwxMi43NU0xNyw3QTE3LDE3IDAgMCwxIDE3LDdNMjEsMTYuMjVWMThIMjRWMTYuMjVDMjQsMTQuNDMgMjEuNSwxMy44NyAxOSwxMy41QzIwLjEyLDE0LjEgMjEsMTUgMjEsMTYuMjVNMiw3QTIsMiAwIDAsMSA0LDVIMjBBMiwyIDAgMCwxIDIyLDdBMiwyIDAgMCwxIDIwLDlINEEyLDIgMCAwLDEgMiw3TTEyLDEwQTMsMyAwIDAsMSA5LDdBMywzIDAgMCwxIDEyLDRBMywzIDAgMCwxIDE1LDdBMywzIDAgMCwxIDEyLDEwWiIgZmlsbD0id2hpdGUiIC8+PC9zdmc+&labelColor=0782ab"/>
29+
<img src="https://img.shields.io/badge/55K+-Users-8ce2ff?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHRpdGxlPmFjY291bnQtZ3JvdXA8L3RpdGxlPjxwYXRoIGQ9Ik0xMiwxMi43NUM3LDEyLjc1IDMsMTMuMzUgMywxNi4yNVYxOEgyMVYxNi4yNUMyMSwxMy4zNSAxNywxMi43NSAxMiwxMi43NU0xNyw3QTE3LDE3IDAgMCwxIDE3LDdNMjEsMTYuMjVWMThIMjRWMTYuMjVDMjQsMTQuNDMgMjEuNSwxMy44NyAxOSwxMy41QzIwLjEyLDE0LjEgMjEsMTUgMjEsMTYuMjVNMiw3QTIsMiAwIDAsMSA0LDVIMjBBMiwyIDAgMCwxIDIyLDdBMiwyIDAgMCwxIDIwLDlINEEyLDIgMCAwLDEgMiw3TTEyLDEwQTMsMyAwIDAsMSA5LDdBMywzIDAgMCwxIDEyLDRBMywzIDAgMCwxIDE1LDdBMywzIDAgMCwxIDEyLDEwWiIgZmlsbD0id2hpdGUiIC8+PC9zdmc+&labelColor=0782ab"/>
3030

3131
</br>
3232
</br>
@@ -42,9 +42,14 @@
4242
</br>
4343
</br>
4444

45+
46+
<p align="center">
47+
<a href="https://trendshift.io/repositories/15655" target="_blank"><img src="https://trendshift.io/api/badge/repositories/15655" alt="rainxchzed%2FGithub-Store | Trendshift" style="width: 250px; height: 54px;" width="250" height="55" />
48+
4549
<a href="https://hellogithub.com/en/repository/rainxchzed/Github-Store" target="_blank">
4650
<img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=rainxchzed%2FGithub-Store&claim_uid=&theme=dark" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" />
4751
</a>
52+
</p>
4853

4954
</p>
5055

@@ -73,7 +78,9 @@ Built with Kotlin Multiplatform and Compose Multiplatform for Android and Deskto
7378

7479
Check out GitHub Store [Wiki](https://github.com/rainxchzed/Github-Store/wiki) for FAQ and useful information
7580

76-
**Privacy Policy:** [openhub-store.github.io/privacy-policy](https://openhub-store.github.io/privacy-policy/)
81+
🌐 **Website:** [github-store.org](https://github-store.org)
82+
💬 **Discord:** [Join the community](https://discord.gg/x9Cvh2Z9qS)
83+
📜 **Privacy Policy:** [github-store.org/privacy-policy](https://github-store.org/privacy-policy/)
7784

7885
</div>
7986

@@ -104,6 +111,15 @@ GitHub® is a registered trademark of GitHub, Inc.
104111
<a href="https://f-droid.org/en/packages/zed.rainxch.githubstore/">
105112
<img src="https://f-droid.org/badge/get-it-on.png" height="80"/>
106113
</a>
114+
<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/rainxchzed/Github-Store/">
115+
<img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium">
116+
</a>
117+
</p>
118+
119+
<p align="center">
120+
<a href="https://discord.gg/x9Cvh2Z9qS">
121+
<img src="https://img.shields.io/badge/Discord-Join%20Community-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord">
122+
</a>
107123
</p>
108124

109125
> [!IMPORTANT]
@@ -154,16 +170,6 @@ GitHub® is a registered trademark of GitHub, Inc.
154170
- Android: opens APK downloads with the package installer, tracks installations in a local database, and shows them in a dedicated Apps screen with update indicators.
155171
- Desktop (Windows/macOS/Linux): downloads installers to the user’s Downloads folder and opens them with the default handler; no hidden temp locations.
156172

157-
- **Appearance & theming**
158-
- Material 3 design with **Material 3 Expressive** components on all platforms.
159-
- Material You dynamic color support on Android where available.
160-
- Optional AMOLED black mode for dark theme on OLED devices.
161-
162-
- **Safety & inspection (Android)**
163-
- Optional GitHub sign‑in via OAuth device flow for higher rate limits with minimal scopes.
164-
- “Open in AppManager” action to inspect an APK’s permissions and trackers before installing.
165-
166-
167173
---
168174

169175
## 🔍 How does my app appear in GitHub Store?
@@ -226,51 +232,6 @@ automatically—no manual submission required.
226232

227233
---
228234

229-
## ⚙️ Tech stack
230-
231-
- **Minimum Android SDK: 24**
232-
233-
- **Language & Platform**
234-
- [Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform.html) (Android + JVM Desktop)
235-
- [Compose Multiplatform UI](https://www.jetbrains.com/compose-multiplatform/) ([Material 3](https://m3.material.io/),
236-
icons, resources)
237-
238-
- **Async & state**
239-
- [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) + [Flow](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/)
240-
- AndroidX Lifecycle (ViewModel + Runtime Compose)
241-
242-
- **Networking & Data**
243-
- [Ktor 3](https://ktor.io/) (HttpClient with OkHttp on Android, Java on Desktop)
244-
- [Kotlinx Serialization JSON](https://github.com/Kotlin/kotlinx.serialization).
245-
- [Kotlinx Datetime](https://github.com/Kotlin/kotlinx-datetime) for time handling
246-
- [Room](https://developer.android.com/jetpack/androidx/releases/room) + KSP for the installed apps database on Android.
247-
248-
- **Dependency injection**
249-
- [Koin 4](https://insert-koin.io/)
250-
251-
- **Navigation**
252-
- [JetBrains Navigation Compose](https://kotlinlang.org/docs/multiplatform/compose-navigation.html)
253-
for shared navigation graph
254-
255-
- **Auth & Security**
256-
- GitHub OAuth (Device Code flow)
257-
- [Androidx DataStore](https://developer.android.com/kotlin/multiplatform/datastore) for token
258-
storage
259-
260-
- **Media & markdown**
261-
- [Coil 3](https://coil-kt.github.io/coil/getting_started/) (Ktor3 image loader)
262-
- [multiplatform-markdown-renderer-m3](https://github.com/mikepenz/multiplatform-markdown-renderer) (+
263-
Coil3 integration) for README/release notes
264-
265-
- **Logging & tooling**
266-
- [Kermit logging](https://kermit.touchlab.co/)
267-
- [Compose Hot Reload](https://kotlinlang.org/docs/multiplatform/compose-hot-reload.html) (
268-
desktop)
269-
- [ProGuard/R8](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization) +
270-
resource shrinking for release builds
271-
272-
---
273-
274235
## ✅ Pros / Why use GitHub Store?
275236

276237
- **No more hunting through GitHub releases**
@@ -292,6 +253,62 @@ automatically—no manual submission required.
292253

293254
---
294255

256+
## 🔐 GitHub Store APK Signing Certificate
257+
258+
All official GitHub Store releases are signed with the following certificate fingerprint:
259+
260+
SHA-256:
261+
`B7:F2:8E:19:8E:48:C1:93:B0:38:C6:5D:92:DD:F7:BC:07:7B:0D:B5:9E:BC:9B:25:0A:6D:AC:48:C1:18:03:CA`
262+
263+
---
264+
265+
## 🔑 GitHub OAuth Configuration
266+
267+
**TL;DR**
268+
1. Create a GitHub OAuth App
269+
2. Copy **Client ID**
270+
3. Put it in `local.properties`
271+
272+
<details>
273+
<summary><strong>Show full setup guide</strong></summary>
274+
275+
<br/>
276+
277+
### 1 - Create a GitHub OAuth App
278+
Go to:
279+
**GitHub → Settings → Developer settings → OAuth Apps → New OAuth App**
280+
281+
| Field | Value |
282+
| ------------------------------ | ------------------------------------------- |
283+
| **Application name** | Anything you like (e.g. *GitHub Store Dev*) |
284+
| **Homepage URL** | `https://github.com/username/repo_name` |
285+
| **Authorization callback URL** | `githubstore://callback` |
286+
287+
Then click **Create application**.
288+
289+
### 2 - Copy Your Client ID
290+
After creating the app, GitHub will show:
291+
- **Client ID** ← you need this
292+
- **Client Secret** ← ❗ NOT required for this project
293+
294+
### 3 - Add It to Your Project
295+
Open your project’s `local.properties` file (root of the project) and add:
296+
```properties
297+
GITHUB_CLIENT_ID=YOUR_CLIENT_ID_HERE
298+
```
299+
300+
### 4 - Sync & Run
301+
Sync the project and run the app. You should now be able to sign in with GitHub.
302+
303+
### ❗ Important Notes
304+
- `local.properties` is **not committed to Git**, so your Client ID stays local.
305+
- This project only needs the **Client ID** (not the Client Secret).
306+
- Each developer should create their own OAuth app for development.
307+
308+
</details>
309+
310+
---
311+
295312
## ☕ Support the project
296313

297314
**GitHub Store** has reached **48,000+ active users** and **5,500+ GitHub stars** — and it's **100% free** with no ads, no tracking, and no premium features.
@@ -316,30 +333,9 @@ I built and maintain this entirely on my own while finishing high school. Your s
316333
-**Starring this repo** — helps others discover GitHub Store
317334
- 🐛 **Reporting bugs** — makes the app better for everyone
318335
- 📢 **Sharing with friends** — spread the word to other developers
319-
- 💬 **Joining discussions** — your feedback shapes the roadmap
336+
- 💬 **Joining our [Discord](https://discord.gg/x9Cvh2Z9qS)** — your feedback shapes the roadmap
320337

321-
Every bit of support—financial or not—means the world and keeps this project alive. Thank you! 🙏
322-
323-
---
324-
325-
## Star History
326-
327-
<a href="https://www.star-history.com/#rainxchzed/Github-Store&type=timeline&legend=top-left">
328-
<picture>
329-
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=rainxchzed/Github-Store&type=timeline&theme=dark&legend=top-left" />
330-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=rainxchzed/Github-Store&type=timeline&legend=top-left" />
331-
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=rainxchzed/Github-Store&type=timeline&legend=top-left" />
332-
</picture>
333-
</a>
334-
335-
## 🔑 Configuration
336-
337-
GitHub Store uses a GitHub OAuth app for authentication and API rate‑limit isolation.
338-
339-
1. Create a GitHub OAuth app at **GitHub → Settings → Developer settings → OAuth Apps**.
340-
2. Set the callback URL to `githubstore://callback` (_Not quite important_).
341-
3. Copy the **Client ID** from the OAuth app.
342-
4. In your project’s `local.properties`, add:
338+
Every bit of support—financial or not—means the world and keeps this project alive. Thank you!
343339

344340
---
345341

@@ -355,7 +351,18 @@ your own risk.
355351
This project does not review, validate, or guarantee that any installer is safe, free of malware, or
356352
fit for any particular purpose.
357353

358-
## Stats
354+
---
355+
356+
## Star History
357+
358+
<a href="https://www.star-history.com/#rainxchzed/Github-Store&type=timeline&legend=top-left">
359+
<picture>
360+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=rainxchzed/Github-Store&type=timeline&theme=dark&legend=top-left" />
361+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=rainxchzed/Github-Store&type=timeline&legend=top-left" />
362+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=rainxchzed/Github-Store&type=timeline&legend=top-left" />
363+
</picture>
364+
</a>
365+
359366
![Alt](https://repobeats.axiom.co/api/embed/20367dca127572e9c47db33850979d78df2c6a8b.svg "Repobeats analytics image")
360367

361368
## 📄 License

SECURITY.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
## Security Policy
2+
3+
## Reporting a Vulnerability
4+
5+
We take the security of this repository seriously. If you discover a security vulnerability, please report it responsibly.
6+
7+
**Please do not open a public GitHub issue for security vulnerabilities.**
8+
9+
Instead, use one of the following methods:
10+
11+
- **GitHub Security Advisories**
12+
Use the "Report a vulnerability" feature available in the repository’s **Security** tab.
13+
14+
- **Email**
15+
Send a detailed report to: [rainxch.dev@gmail.com](mailto:rainxch.dev@gmail.com)
16+
17+
---
18+
19+
## What to Include in Your Report
20+
21+
To help us assess and resolve the issue quickly, please include:
22+
23+
- A clear description of the vulnerability
24+
- Steps to reproduce the issue
25+
- Proof of concept (PoC), if available
26+
- Affected files, endpoints, or components
27+
- Potential impact of the vulnerability
28+
29+
---
30+
31+
## Response Timeline
32+
33+
We aim to follow this general timeline:
34+
35+
- **Acknowledgement:** Within 48 hours
36+
- **Initial assessment:** Within 5 business days
37+
- **Fix or mitigation:** Based on severity and complexity
38+
39+
Timelines may vary depending on the nature of the vulnerability.
40+
41+
---
42+
43+
## Coordinated Disclosure
44+
45+
We kindly request that you practice responsible disclosure and avoid sharing details publicly until the vulnerability has been addressed or a fix has been released.
46+
47+
---
48+
49+
## Security Best Practices
50+
51+
Contributors are encouraged to:
52+
53+
- Follow secure coding practices
54+
- Avoid committing secrets or credentials
55+
- Use dependency scanning and security tools where possible
56+
- Review pull requests for potential security issues
57+
58+
---
59+
60+
## Thank You
61+
62+
We appreciate the efforts of the security community and responsible researchers who help keep this project secure.
63+

0 commit comments

Comments
 (0)