├── .gitattributes ├── .github └── workflows │ └── update_readme.yml ├── .gitignore ├── .idea ├── artifacts │ └── awesome_android_kotlin_apps_main_jar.xml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── jarRepositories.xml ├── kotlinc.xml ├── libraries-with-intellij-classes.xml ├── misc.xml └── vcs.xml ├── AUTHORS ├── CONTRIBUTING.md ├── META-INF └── MANIFEST.MF ├── README.md ├── README.model.md ├── assets ├── android.svg ├── androiddevnotes.png ├── count.svg └── kotlin.svg ├── awesome-android-kotlin-apps.main.jar ├── build.gradle ├── gpm.json ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── input_data.json ├── settings.gradle ├── src └── main │ └── kotlin │ └── com │ └── github │ └── aaka │ ├── App.kt │ ├── core │ └── ReadMeGenerator.kt │ ├── data │ ├── local │ │ ├── InputProjectCategory.kt │ │ └── Project.kt │ ├── remote │ │ ├── GetRepoResponse.kt │ │ └── GitHubApi.kt │ └── repo │ │ ├── GitHubRepo.kt │ │ ├── InputDataRepo.kt │ │ └── ReadMeRepo.kt │ ├── di │ ├── AppComponent.kt │ └── modules │ │ ├── MoshiModule.kt │ │ └── NetworkModule.kt │ ├── tasks │ └── convert │ │ └── MarkdownToJsonConvertor.kt │ └── utils │ └── DateTimeUtils.kt ├── stale_outputs_checked └── test.file /.gitattributes: -------------------------------------------------------------------------------- 1 | *.md linguist-language=kotlin -------------------------------------------------------------------------------- /.github/workflows/update_readme.yml: -------------------------------------------------------------------------------- 1 | name: Update README 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | schedule: 8 | - cron: '0 */6 * * *' 9 | 10 | jobs: 11 | build: 12 | 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Set up JDK 17 | uses: actions/setup-java@v1 18 | with: 19 | java-version: 11 20 | - name: Get latest repo 21 | uses: actions/checkout@master 22 | - name: Create local changes 23 | run: java -jar awesome-android-kotlin-apps.main.jar 24 | env: 25 | GITHUB_ACCESS_TOKEN: ${{ secrets.THE_GITHUB_ACCESS_TOKEN }} 26 | - name: Commit files 27 | run: | 28 | git config --local user.email "theapache64bot@gmail.com" 29 | git config --local user.name "theapache64-bot" 30 | git commit -m "🚀 UPDATE README!" -a 31 | - name: Push changes 32 | uses: ad-m/github-push-action@master 33 | with: 34 | github_token: ${{ secrets.THE_GITHUB_ACCESS_TOKEN }} 35 | branch: master 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/kotlin,intellij,gradle 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=kotlin,intellij,gradle 4 | 5 | ### Intellij ### 6 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 7 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 8 | 9 | # User-specific stuff 10 | .idea/**/workspace.xml 11 | .idea/**/tasks.xml 12 | .idea/**/usage.statistics.xml 13 | .idea/**/dictionaries 14 | .idea/**/shelf 15 | 16 | # Generated files 17 | .idea/**/contentModel.xml 18 | 19 | # Sensitive or high-churn files 20 | .idea/**/dataSources/ 21 | .idea/**/dataSources.ids 22 | .idea/**/dataSources.local.xml 23 | .idea/**/sqlDataSources.xml 24 | .idea/**/dynamic.xml 25 | .idea/**/uiDesigner.xml 26 | .idea/**/dbnavigator.xml 27 | 28 | # Gradle 29 | .idea/**/gradle.xml 30 | .idea/**/libraries 31 | 32 | # Gradle and Maven with auto-import 33 | # When using Gradle or Maven with auto-import, you should exclude module files, 34 | # since they will be recreated, and may cause churn. Uncomment if using 35 | # auto-import. 36 | # .idea/artifacts 37 | # .idea/compiler.xml 38 | # .idea/jarRepositories.xml 39 | # .idea/modules.xml 40 | # .idea/*.iml 41 | # .idea/modules 42 | # *.iml 43 | # *.ipr 44 | 45 | # CMake 46 | cmake-build-*/ 47 | 48 | # Mongo Explorer plugin 49 | .idea/**/mongoSettings.xml 50 | 51 | # File-based project format 52 | *.iws 53 | 54 | # IntelliJ 55 | out/ 56 | 57 | # mpeltonen/sbt-idea plugin 58 | .idea_modules/ 59 | 60 | # JIRA plugin 61 | atlassian-ide-plugin.xml 62 | 63 | # Cursive Clojure plugin 64 | .idea/replstate.xml 65 | 66 | # Crashlytics plugin (for Android Studio and IntelliJ) 67 | com_crashlytics_export_strings.xml 68 | crashlytics.properties 69 | crashlytics-build.properties 70 | fabric.properties 71 | 72 | # Editor-based Rest Client 73 | .idea/httpRequests 74 | 75 | # Android studio 3.1+ serialized cache file 76 | .idea/caches/build_file_checksums.ser 77 | 78 | ### Intellij Patch ### 79 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 80 | 81 | # *.iml 82 | # modules.xml 83 | # .idea/misc.xml 84 | # *.ipr 85 | 86 | # Sonarlint plugin 87 | # https://plugins.jetbrains.com/plugin/7973-sonarlint 88 | .idea/**/sonarlint/ 89 | 90 | # SonarQube Plugin 91 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin 92 | .idea/**/sonarIssues.xml 93 | 94 | # Markdown Navigator plugin 95 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced 96 | .idea/**/markdown-navigator.xml 97 | .idea/**/markdown-navigator-enh.xml 98 | .idea/**/markdown-navigator/ 99 | 100 | # Cache file creation bug 101 | # See https://youtrack.jetbrains.com/issue/JBR-2257 102 | .idea/$CACHE_FILE$ 103 | 104 | # CodeStream plugin 105 | # https://plugins.jetbrains.com/plugin/12206-codestream 106 | .idea/codestream.xml 107 | 108 | ### Kotlin ### 109 | # Compiled class file 110 | *.class 111 | 112 | # Log file 113 | *.log 114 | 115 | # BlueJ files 116 | *.ctxt 117 | 118 | # Mobile Tools for Java (J2ME) 119 | .mtj.tmp/ 120 | 121 | # Package Files # 122 | *.jar 123 | *.war 124 | *.nar 125 | *.ear 126 | *.zip 127 | *.tar.gz 128 | *.rar 129 | 130 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 131 | hs_err_pid* 132 | 133 | ### Gradle ### 134 | .gradle/ 135 | build/ 136 | 137 | # Ignore Gradle GUI config 138 | gradle-app.setting 139 | 140 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) 141 | !gradle-wrapper.jar 142 | 143 | # Cache of project 144 | .gradletasknamecache 145 | 146 | # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 147 | # gradle/wrapper/gradle-wrapper.properties 148 | 149 | ### Gradle Patch ### 150 | **/build/ 151 | 152 | # End of https://www.toptal.com/developers/gitignore/api/kotlin,intellij,gradle 153 | SecretConstants.kt 154 | !awesome-android-kotlin-apps.main.jar -------------------------------------------------------------------------------- /.idea/artifacts/awesome_android_kotlin_apps_main_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$ 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/libraries-with-intellij-classes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 64 | 65 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | The open-source work on androiddevnotes is developed on the efforts of open-source contributors. 2 | 3 | Here is a list of helpful contributors to the project. These contributors have contributed resources, translations and ideas to the project. 4 | 5 | This will forever be an incomplete list of contributors. 6 | 7 | Sarvesh Prajapati 8 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guide 2 | 3 | ## How to contribute 4 | 5 | - Fork the project from the `master` branch and submit a Pull Request (PR) 6 | 7 | - Explain what the PR fixes or improves. 8 | 9 | - If you want to add a new repo: 10 | 11 | - Open the [input_data.json](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/input_data.json) 12 | 13 | - Add repo url and tech stack there. 14 | 15 | - If you want to add more content or modify the content in the [README](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.md) file, then modify the [README.model.md](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.model.md) file. DO NOT DIRECTLY MODIFY THE [README](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.md) file, the changes won't persist. Go to [README.model.md](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.model.md) file and then edit there. Your edits in the [README.model.md](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.model.md) will sync to [README](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.md) in few moments. 16 | 17 | - For example, if you want to add new table to the [README](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.md), you open the [README.model.md](https://github.com/androiddevnotes/awesome-android-kotlin-apps/blob/master/README.model.md) file, and add there. 18 | 19 | - Use sensible commit messages 20 | 21 | - If your PR fixes a separate issue number, include it in the commit message. 22 | 23 | - Use a sensible number of commit messages as well 24 | 25 | - e.g. Your PR should not have 1000s of commits. -------------------------------------------------------------------------------- /META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: com.github.aaka.AppKt 3 | 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 |

Awesome Android Kotlin Apps


11 | 12 |

13 | :eyeglasses: A curated list of awesome android kotlin apps by open-source contributors. 14 |

15 |
16 | 17 |

18 | Awesome Android Kotlin Apps Count badge 19 | Android Language Badge 20 | Kotlin Language Badge 21 | androiddevnotes GitHub badge 22 | 23 |

24 | 25 |
26 |

27 | androiddevnotes logo 28 |


29 | 30 | 31 | **Awesome Android Kotlin Apps** aims to be the starting point for developers to find an Android app with a particular Tech Stack / Libraries. 32 | 33 | ___🔃 Last updated : Thu Oct 12 18:02:44 UTC 2023___ 34 | 35 | ## Contents 36 | 37 | :art: [**Pattern**](#art-pattern) 38 | 39 | 40 | - [Jetpack Compose Apps](#jetpack-compose-apps) 41 | 42 | - [Model View ViewModel (MVVM)](#mvvm) 43 | 44 | - [Normal](#normal) 45 | - [Clean Architecture](#clean-architecture) 46 | 47 | - [Model View Intent (MVI)](#mvi) 48 | 49 | - [Normal](#normal-1) 50 | - [Clean Architecture](#clean-architecture-1) 51 | 52 | - [Model View Presenter (MVP)](#mvp) 53 | 54 | - [Model View Controller (MVC) and Other Patterns](#other) 55 | 56 | 57 | :books: [**Tech Stack/Libraries**](#books-tech-stacklibraries) 58 | 59 | :memo: [**Contributing**](#memo-contributing) 60 | 61 | :moyai: [**Core Contributors**](#moyai-core-contributors) 62 | 63 | 64 | ## :art: Pattern 65 | 66 | ### Jetpack Compose Apps 67 | 68 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 69 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 70 | | [awesome-jetpack-compose-android-apps](https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps) | [androiddevnotes](https://github.com/androiddevnotes) | 👓 A curated list of awesome Jetpack Compose android apps by open-source contributors.

Last commit: 8 months ago | 🌟 995
🍴 103
👁️ 21 | 71 | | [DICE-ROLL-APP](https://github.com/SSAHHC/DICE_ROLL_APP) | [SSAHHC](https://github.com/SSAHHC) | BASIC JETPACK COMPOSE APP

Last commit: 12 months ago | 🌟 1
🍴 0
👁️ 1 | 72 | | [RickNMortyCompose](https://github.com/a914-gowtham/RickNMortyCompose) | [a914-gowtham](https://github.com/a914-gowtham) | A Jetpack compose android app based on Rick and Morty Graphql

Last commit: 2 years ago | 🌟 23
🍴 0
👁️ 1 | 73 | 74 | ### MVVM 75 | 76 | #### Normal 77 | 78 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 79 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 80 | | [showly-2.0](https://github.com/michaldrabik/showly-2.0) | [michaldrabik](https://github.com/michaldrabik) | Showly 2.0 is modern, slick, open-sourced Android TV Shows Tracker.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, Firebase Messaging, WorkManager, Navigation, Dynamicanimation, LiveData, ViewModel

Last commit: 10 minutes ago | 🌟 611
🍴 41
👁️ 14 | 81 | | [Inure](https://github.com/Hamza417/Inure) | [Hamza417](https://github.com/Hamza417) | An elegant and beautiful premium Android app manager for both rooted and non-rooted devices and a built-in terminal, analytics panel and an independent custom theme engine, developed with purely custom APIs created for this app.

Tech Stack : LiveData, ViewModel, WebKit, APK Parser, libsu

Last commit: 1 hour ago | 🌟 667
🍴 43
👁️ 14 | 82 | | [vocable-android](https://github.com/willowtreeapps/vocable-android) | [willowtreeapps](https://github.com/willowtreeapps) | Vocable for Android

Tech Stack : Koin, Coroutines, Testing, Room, Data Binding, AR, LiveData, ViewModel

Last commit: 2 hours ago | 🌟 96
🍴 12
👁️ 106 | 83 | | [alkaa](https://github.com/igorescodro/alkaa) | [igorescodro](https://github.com/igorescodro) | Open-source app to manage your tasks quickly and easily

Tech Stack : Koin, Espresso, UiAutomator, Mockk, Coroutines, Navigation, Room, MotionLayout, KTX, Modularization, Dynamic Delivery, Dark Theme, klint, Detekt, codebeat, CodeFactor, Codacy, MPAndroidChart, Groupie, LiveData, ViewModel

Last commit: 5 hours ago | 🌟 1057
🍴 114
👁️ 18 | 84 | | [MyCuration](https://github.com/phicdy/MyCuration) | [phicdy](https://github.com/phicdy) | RSS Reader for Android with article filtering and curation

Tech Stack : Koin, Coroutines, Testing, Retrofit, Jsoup, WorkManager, Data Binding, Navigation, LiveData, ViewModel

Last commit: 15 hours ago | 🌟 27
🍴 9
👁️ 1 | 85 | | [SoMovie](https://github.com/LouisFn/SoMovie) | [LouisFn](https://github.com/LouisFn) |

Tech Stack : Compose, Kotlin, Coroutines, Gradle Kotlin DSL, Multi Module, View Model, Room, DataStore, Paging 3, Hilt, Retrofit, Coil, JUnit, Jacoco, Ktlint, Detekt, Github Actions

Last commit: 19 hours ago | 🌟 12
🍴 2
👁️ 2 | 86 | | [NotyKT](https://github.com/PatilShreyas/NotyKT) | [PatilShreyas](https://github.com/PatilShreyas) | 📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

Tech Stack : Backend - Ktor, PostgreSQL; Android = Coroutines, Flow, Navigation Architecture, LiveData, ViewModel, Room DB, DataStore, Jetpack Security, WorkManager, Dagger Hilt DI, Jetpack Compose, Material UI, Retrofit, Moshi

Last commit: 2 days ago | 🌟 1575
🍴 224
👁️ 25 | 87 | | [Nekome](https://github.com/Chesire/Nekome) | [Chesire](https://github.com/Chesire) | Nekome is an Android application to manage tracked Anime and Manga lists.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel

Last commit: 2 days ago | 🌟 338
🍴 40
👁️ 3 | 88 | | [plees-tracker](https://github.com/vmiklos/plees-tracker) | [vmiklos](https://github.com/vmiklos) | Plees Tracker is a simple sleep tracker for your Android phone.

Tech Stack : Room, LiveData, ViewModel

Last commit: 4 days ago | 🌟 121
🍴 32
👁️ 7 | 89 | | [apkupdater](https://github.com/rumboalla/apkupdater) | [rumboalla](https://github.com/rumboalla) | APKUpdater is an open source tool that simplifies the process of finding updates for your installed apps.

Tech Stack : Koin, JSoup, Navigation, LiveData, ViewModel

Last commit: 4 days ago | 🌟 1853
🍴 170
👁️ 88 | 90 | | [libbra](https://github.com/nuhkoca/libbra) | [nuhkoca](https://github.com/nuhkoca) | A currency tracker app demonstration. It refreshes currency list every single second based on the main currency. In addition to that, main currency is selectable.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel

Last commit: 4 days ago | 🌟 53
🍴 11
👁️ 1 | 91 | | [WallPortal](https://github.com/zedlabs/WallPortal) | [zedlabs](https://github.com/zedlabs) | Minimal Wallpapers for Android using Kotlin+Compose+MVVM+Hilt+Coroutines+Jetpack(Room, Paging, Navigation)

Tech Stack : Dagger Hilt, Coroutines, Retrofit, Room, Paging, Navigation, LiveData, ViewModel

Last commit: 5 days ago | 🌟 278
🍴 48
👁️ 4 | 92 | | [Pokedex](https://github.com/skydoves/Pokedex) | [skydoves](https://github.com/skydoves) | 🗡️ Pokedex demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.

Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel

Last commit: 5 days ago | 🌟 7069
🍴 933
👁️ 212 | 93 | | [Kotlin-Pokedex](https://github.com/mrcsxsiq/Kotlin-Pokedex) | [mrcsxsiq](https://github.com/mrcsxsiq) | :cyclone: A Pokedex app using ViewModel, ViewBinding, LiveData, Room and Navigation

Tech Stack : LiveData, Navigation Jetpack, ViewModel, Room, Gradle Kotlin DSL, Databinding, Retrofit, Koin and Ktlint

Last commit: 6 days ago | 🌟 1448
🍴 210
👁️ 24 | 94 | | [flexbooru](https://github.com/flexbooru/flexbooru) | [flexbooru](https://github.com/flexbooru) | A booru client for Android, support Danbooru, Moebooru, Gelbooru, Shimmie, etc.

Tech Stack : Kodein, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Tikxml, LiveData, ViewModel

Last commit: 1 week ago | 🌟 771
🍴 70
👁️ 29 | 95 | | [habitica-android](https://github.com/HabitRPG/habitica-android) | [HabitRPG](https://github.com/HabitRPG) | Native Android app for Habitica

Tech Stack : Dagger, Coroutines, RxJava, Retrofit, Realm, Firebase Messaging, Paging, Navigation, Facebook, FlowLayout, LiveData, ViewModel

Last commit: 1 week ago | 🌟 1237
🍴 492
👁️ 57 | 96 | | [rugby-ranker](https://github.com/ricknout/rugby-ranker) | [ricknout](https://github.com/ricknout) | An Android app for viewing and predicting the latest World Rugby rankings 🏉

Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, insetter, LiveData, ViewModel

Last commit: 1 week ago | 🌟 288
🍴 48
👁️ 10 | 97 | | [muzei](https://github.com/muzei/muzei) | [muzei](https://github.com/muzei) | Muzei Live Wallpaper for Android

Tech Stack : Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel

Last commit: 2 weeks ago | 🌟 4553
🍴 961
👁️ 185 | 98 | | [Eyepetizer](https://github.com/VIPyinzhiwei/Eyepetizer) | [VIPyinzhiwei](https://github.com/VIPyinzhiwei) | 🔥基于 Kotlin 语言仿写「开眼 Eyepetizer」的一个短视频 Android 客户端项目,采用 Jetpack + 协程实现的 MVVM 架构。

Tech Stack : Coroutines, Testing, Retrofit, WorkManager, GSYVideoPlayer, Data Binding, PermissionX, EventBus, LiveData, ViewModel

Last commit: 2 weeks ago | 🌟 1762
🍴 405
👁️ 34 | 99 | | [Photos](https://github.com/SIKV/Photos) | [SIKV](https://github.com/SIKV) |

Tech Stack : Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase-ML, Firebase-Analytics, Paging, Navigation, LiveData, ViewModel

Last commit: 2 weeks ago | 🌟 80
🍴 17
👁️ 5 | 100 | | [awaker](https://github.com/ruzhan1116/awaker) | [ruzhan1116](https://github.com/ruzhan1116) | article app for android

Tech Stack : RxJava, Testing, Retrofit, Room, ExoPlayer, LiveData, ViewModel

Last commit: 2 months ago | 🌟 526
🍴 87
👁️ 17 | 101 | | [raffler-kotlin](https://github.com/fibelatti/raffler-kotlin) | [fibelatti](https://github.com/fibelatti) | A raffling app developed as a playground to study many topics related to Android. Kotlin + Coroutines + MVVM

Tech Stack : Dagger, Coroutines, Testing, Room, LiveData, ViewModel

Last commit: 2 months ago | 🌟 47
🍴 3
👁️ 4 | 102 | | [GitExplorer-Android](https://github.com/Shashank02051997/GitExplorer-Android) | [Shashank02051997](https://github.com/Shashank02051997) | Find the right git commands 🔥 without digging through the web.😊😊😉

Tech Stack : LiveData, ViewModel

Last commit: 2 months ago | 🌟 134
🍴 23
👁️ 7 | 103 | | [open-event-attendee-android](https://github.com/fossasia/open-event-attendee-android) | [fossasia](https://github.com/fossasia) | Open Event Attendee Android General App https://github.com/fossasia/open-event-android/blob/apk/open-event-dev-app-playStore-debug.apk

Tech Stack : Koin, RxJava, Testing, Retrofit, Room, Stripe, PayPal, Mapbox, Paging, Data Binding, Navigation, LiveData, ViewModel

Last commit: 3 months ago | 🌟 1946
🍴 563
👁️ 30 | 104 | | [The-Movie-DB-Kotlin](https://github.com/dangquanuet/The-Movie-DB-Kotlin) | [dangquanuet](https://github.com/dangquanuet) | The Movie DB app using Kotlin with updated Android features

Tech Stack : Koin, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Data Binding, Easy Permissions, Navigation, LiveData, ViewModel

Last commit: 3 months ago | 🌟 390
🍴 92
👁️ 8 | 105 | | [DroidNotes](https://github.com/mrcsxsiq/DroidNotes) | [mrcsxsiq](https://github.com/mrcsxsiq) | 📝 Note List app based on MVVM architecture (ViewModel, LiveData, Coroutines, Room and Jetpack Compose)

Tech Stack : ViewModel, LiveData, Coroutines, Room, Jetpack Compose

Last commit: 4 months ago | 🌟 56
🍴 5
👁️ 3 | 106 | | [qksms](https://github.com/moezbhatti/qksms) | [moezbhatti](https://github.com/moezbhatti) | The most beautiful SMS messenger for Android

Tech Stack : Dagger, Coroutines, RxJava, Testing, Retrofit, Realm, ExoPlayer, Conductor, Data Binding, ShortcutBadger, LiveData, ViewModel

Last commit: 4 months ago | 🌟 4264
🍴 1065
👁️ 131 | 107 | | [Presently](https://github.com/alisonthemonster/Presently) | [alisonthemonster](https://github.com/alisonthemonster) | Android app for recording gratitude journal entries -- over 1 million installs, contribute today!

Tech Stack : Dagger, Coroutines, RxJava, Testing, Room, Firebase Messaging, WorkManager, Dropbox, Calendar view, Paging, Biometric, LiveData, ViewModel

Last commit: 5 months ago | 🌟 348
🍴 75
👁️ 14 | 108 | | [Praxis](https://github.com/mutualmobile/Praxis) | [mutualmobile](https://github.com/mutualmobile) | Example Android project using MVVM, DaggerAndroid, Jetpack Compose, Retrofit, Coroutines and Multi module architecture ✌🏽

Tech Stack : Dagger, Retrofit, Coroutines, RXJava2, ViewModel, Data Binding

Last commit: 5 months ago | 🌟 320
🍴 46
👁️ 10 | 109 | | [wanandroid](https://github.com/lulululbj/wanandroid) | [lulululbj](https://github.com/lulululbj) | Jetpack MVVM For Wanandroid 最佳实践 !

Tech Stack : Koin, Coroutines, Testing, Retrofit, Navigation, FlowLayout, LiveData, ViewModel

Last commit: 5 months ago | 🌟 1362
🍴 234
👁️ 20 | 110 | | [ForgetMeNot](https://github.com/tema6120/ForgetMeNot) | [tema6120](https://github.com/tema6120) | A flashcard app for Android.

Tech Stack : Coroutines + Flow, SQLDelight, Kotlin Serialization, Klock, Brackeys-IDE EditorKit

Last commit: 6 months ago | 🌟 333
🍴 37
👁️ 9 | 111 | | [Updoot](https://github.com/adityam49/Updoot) | [adityam49](https://github.com/adityam49) | A reddit client built for android

Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, ExoPlayer, WorkManager, Data Binding, Navigation, LiveData, ViewModel, Compose

Last commit: 6 months ago | 🌟 66
🍴 7
👁️ 4 | 112 | | [TvFlix](https://github.com/reactivedroid/TvFlix) | [reactivedroid](https://github.com/reactivedroid) | TvFlix android app using Dagger Hilt, Coroutines, Flow, KTX, Jetpack(Room, ViewModel, Paging3, Lifecycle) based on MVVM with clean code architecture purely written in Kotlin

Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel

Last commit: 6 months ago | 🌟 410
🍴 60
👁️ 15 | 113 | | [Resplash](https://github.com/b-lam/Resplash) | [b-lam](https://github.com/b-lam) | Unofficial Unsplash Android App

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, Firestore, Firebase In-App Messaging, Paging, Navigation, Google Play Billing, Muzei, LiveData, ViewModel

Last commit: 7 months ago | 🌟 591
🍴 106
👁️ 14 | 114 | | [fenix](https://github.com/mozilla-mobile/fenix) | [mozilla-mobile](https://github.com/mozilla-mobile) | ⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android

Tech Stack : Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel

Last commit: 8 months ago | 🌟 6553
🍴 1316
👁️ 144 | 115 | | [Portfolio-App](https://github.com/ashucoder1/Portfolio-App) | [ashucoder1](https://github.com/ashucoder1) |

Tech Stack : Kotlin, Room, Basic Intents, Gallery Image Picker

Last commit: 8 months ago | 🌟 0
🍴 0
👁️ 1 | 116 | | [iiCnma](https://github.com/ImnIrdst/iiCnma) | [ImnIrdst](https://github.com/ImnIrdst) | A playground android app, showcasing the latest technologies and architectures using the Movie Database APIs.

Tech Stack : Dagger Hilt, Testing, Coroutines + Flow, Retrofit, Room, LiveData, ViewModel, Paging, Navigation

Last commit: 8 months ago | 🌟 46
🍴 6
👁️ 2 | 117 | | [MVVM-Architecture-Android](https://github.com/amitshekhariitbhu/MVVM-Architecture-Android) | [amitshekhariitbhu](https://github.com/amitshekhariitbhu) | MVVM architecture using Kotlin, Dagger, Retrofit, Coroutines, Flow, StateFlow, and etc.

Tech Stack : Dagger, Coroutines, RXJava2, ViewModel, Data Binding, LiveData.

Last commit: 8 months ago | 🌟 435
🍴 106
👁️ 14 | 118 | | [iosched](https://github.com/google/iosched) | [google](https://github.com/google) | The Google I/O Android App

Tech Stack : Dagger Hilt, Coroutines, Testing, Room, Firestore, Firebase Auth, Firebase Messaging, Firebase Functions, Navigation, ARCore, LiveData, ViewModel

Last commit: 9 months ago | 🌟 21786
🍴 6269
👁️ 1438 | 119 | | [apturicovid-android](https://github.com/ApturiCOVID/apturicovid-android) | [ApturiCOVID](https://github.com/ApturiCOVID) | Apturi Covid Android lietotne

Tech Stack : Dagger, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Data Binding, ShortcutBadger, LiveData, ViewModel

Last commit: 10 months ago | 🌟 38
🍴 7
👁️ 8 | 120 | | [DeezerClone](https://github.com/fevziomurtekin/DeezerClone) | [fevziomurtekin](https://github.com/fevziomurtekin) | This Application using Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData),Navigation based on MVVM architecture.

Tech Stack : Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel,Navigation LiveData), Retrofit, Paging, Testing

Last commit: 11 months ago | 🌟 92
🍴 9
👁️ 1 | 121 | | [MovieMan](https://github.com/calvinnor/MovieMan) | [calvinnor](https://github.com/calvinnor) | An open-source Android app for viewing Movies / TV information.

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel

Last commit: 11 months ago | 🌟 81
🍴 13
👁️ 7 | 122 | | [ChangeDetection](https://github.com/bernaferrari/ChangeDetection) | [bernaferrari](https://github.com/bernaferrari) | Automatically track websites changes on Android in background.

Tech Stack : Dagger, Coroutines, RxJava, Retrofit, Room, Firestore, WorkManager, Paging, Data Binding, Navigation, JSoup, js-evaluator-for-android, LiveData, ViewModel

Last commit: 11 months ago | 🌟 675
🍴 91
👁️ 19 | 123 | | [flexbooru-ap](https://github.com/flexbooru/flexbooru-ap) | [flexbooru](https://github.com/flexbooru) | An anime-pictures.net client for Android.

Tech Stack : Kodein, Coroutines, Retrofit, Room, WorkManager, Navigation, Markwon, LiveData, ViewModel

Last commit: 12 months ago | 🌟 69
🍴 7
👁️ 4 | 124 | | [Instant-Weather](https://github.com/mayokunadeniyi/Instant-Weather) | [mayokunadeniyi](https://github.com/mayokunadeniyi) | An Android weather application implemented using the MVVM pattern, Retrofit2, Dagger Hilt, LiveData, ViewModel, Coroutines, Room, Navigation Components, Data Binding and some other libraries from the Android Jetpack.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, Algolia Search, LiveData, ViewModel

Last commit: 1 year ago | 🌟 734
🍴 159
👁️ 19 | 125 | | [MovieCatalogue](https://github.com/ryanrvldo/MovieCatalogue) | [ryanrvldo](https://github.com/ryanrvldo) |

Tech Stack : ViewModel, LiveData, Coroutines, Firebase Cloud Messaging, Retrofit, Room, Glide, Dagger Hilt, and Google Material.

Last commit: 1 year ago | 🌟 22
🍴 3
👁️ 1 | 126 | | [AnimeXStream](https://github.com/mukul500/AnimeXStream) | [mukul500](https://github.com/mukul500) | An Android app to watch anime on your phone without ads.

Tech Stack : Retrofit, RxJava, Epoxy, ViewModel, LiveData, Navigation, Realm, ExoPlayer v2.0, Glide

Last commit: 1 year ago | 🌟 2470
🍴 214
👁️ 132 | 127 | | [MovieHunt](https://github.com/enginebai/MovieHunt) | [enginebai](https://github.com/enginebai) | Movie Android App written in Kotlin, MVVM, RxJava, Jetpack Compose (implementing), Android Architecture Components and Coroutine (Upcoming).

Tech Stack : Koin, RxJava, Room, Paging, Navigation, Epoxy, LiveData, ViewModel

Last commit: 1 year ago | 🌟 684
🍴 82
👁️ 16 | 128 | | [space-app](https://github.com/ValterKasper/space-app) | [ValterKasper](https://github.com/ValterKasper) | An Android app which shows timeline of upcoming rocket launches and showcases architecture of real application.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel

Last commit: 1 year ago | 🌟 153
🍴 17
👁️ 5 | 129 | | [Upgur](https://github.com/xiprox/Upgur) | [xiprox](https://github.com/xiprox) | A very simple offline-first Imgur client app

Tech Stack : Dagger, Retrofit, Room, WorkManager, Navigation, android-upload-service, LiveData, ViewModel

Last commit: 1 year ago | 🌟 13
🍴 3
👁️ 2 | 130 | | [WallpaperApp-mvvm](https://github.com/androiddevnotesforks/WallpaperApp_mvvm) | [androiddevnotesforks](https://github.com/androiddevnotesforks) | App for viewing and downloading wallpapers

Tech Stack : Koin, Coroutines, Retrofit, Room, Lottie, Zoomy, Navigation, LiveData, ViewModel

Last commit: 1 year ago | 🌟 2
🍴 0
👁️ 0 | 131 | | [feedapp](https://github.com/dievskiy/feedapp) | [dievskiy](https://github.com/dievskiy) | Calorie tracker for android that supports recipes and products search.

Tech Stack : Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Facebook Login, WorkManager, MPAndroidChart, Data Binding, Navigation, LiveData, ViewModel

Last commit: 1 year ago | 🌟 67
🍴 14
👁️ 3 | 132 | | [MusicPlayer](https://github.com/ZahraHeydari/MusicPlayer) | [ZahraHeydari](https://github.com/ZahraHeydari) | Implemented using Clean Arch, MVVM, LiveData, Room, Koin, Coil, Service, Notification and ExoPlayer

Tech Stack : Koin, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel

Last commit: 1 year ago | 🌟 573
🍴 87
👁️ 12 | 133 | | [Our-chat](https://github.com/ganainy/Our_chat) | [ganainy](https://github.com/ganainy) | Private chat app with realtime notification and support audio messages,image sharing,file sharing using MVVM architecture,Firebase authentication firestore,storage,FCM,cloud functions and facebook login

Tech Stack : Coroutines, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, Facebook Login, WorkManager, Dexter, Data Binding, Navigation, LiveData, ViewModel

Last commit: 1 year ago | 🌟 29
🍴 8
👁️ 1 | 134 | | [Kripto](https://github.com/sauravrao637/Kripto) | [sauravrao637](https://github.com/sauravrao637) | Kripto - A Cryptocurrency app for Android.

Tech Stack : Hilt, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, State FLow, ViewModel

Last commit: 1 year ago | 🌟 12
🍴 2
👁️ 1 | 135 | | [andriod-movie-collection-application](https://github.com/Ratheshan03/andriod-movie-collection-application) | [Ratheshan03](https://github.com/Ratheshan03) |

Tech Stack : Kotlin, Json, XML, SQLlite, OMBD-API, Room, Coroutines, CI-CD, ViewModel, Navigation

Last commit: 1 year ago | 🌟 0
🍴 0
👁️ 1 | 136 | | [android-arithmetic-game](https://github.com/Ratheshan03/android-arithmetic-game) | [Ratheshan03](https://github.com/Ratheshan03) |

Tech Stack : Kotlin, Json, XML, SQLlite, OMBD-API, Room, Coroutines, ViewModel

Last commit: 1 year ago | 🌟 0
🍴 0
👁️ 1 | 137 | | [MVVM-Architecture](https://github.com/qingmei2/MVVM-Architecture) | [qingmei2](https://github.com/qingmei2) | The practice of MVVM + Jetpack architecture in Android.

Tech Stack : Dagger Hilt, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel

Last commit: 2 years ago | 🌟 1795
🍴 286
👁️ 45 | 138 | | [NYTimes-App](https://github.com/TheCodeMonks/NYTimes-App) | [TheCodeMonks](https://github.com/TheCodeMonks) | 🗽 A Simple Demonstration of the New York Times App 📱 using Jsoup web crawler with MVVM Architecture 🔥

Tech Stack : Coroutines, Room, JSoup, Navigation, LiveData, ViewModel

Last commit: 2 years ago | 🌟 503
🍴 62
👁️ 14 | 139 | | [SimpleBible](https://github.com/mithun17/SimpleBible) | [mithun17](https://github.com/mithun17) | Simple Bible is a light weight Bible app that lets you read the Bible, take notes, bookmark them and share with your friends.

Tech Stack : Dagger Hilt, Coroutines + Flow, ViewModel, Retrofit, Room, Navigation

Last commit: 2 years ago | 🌟 27
🍴 5
👁️ 1 | 140 | | [Tedu](https://github.com/PHELAT/Tedu) | [PHELAT](https://github.com/PHELAT) | Todo app but minimal, open-source, and free.

Tech Stack : Dagger, Room, Coroutines, Firebase Messaging, Navigation, LiveData, ViewModel

Last commit: 2 years ago | 🌟 142
🍴 22
👁️ 5 | 141 | | [Pokedex-AR](https://github.com/skydoves/Pokedex-AR) | [skydoves](https://github.com/skydoves) | 🦄 Pokedex-AR demonstrates ARCore, Sceneform, and modern Android tech stacks — such as Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture.

Tech Stack : Dagger Hilt, Coroutines, Retrofit, Room, ARCore, Sceneform, ViewModel, Data Binding, LiveData.

Last commit: 2 years ago | 🌟 576
🍴 55
👁️ 17 | 142 | | [kotlin-mvvm-covid19](https://github.com/rizmaulana/kotlin-mvvm-covid19) | [rizmaulana](https://github.com/rizmaulana) | This repository contains simple COVID19 data monitoring with android stack MVVM, Live Data, Koin, RxJava, RxBinding, Offline first with simple caching, etc

Tech Stack : LiveData, Koin, RxJava, RxBinding, Offline first with simple caching, Spek2Framwework for Unit Testing, etc

Last commit: 2 years ago | 🌟 435
🍴 115
👁️ 13 | 143 | | [Foodium](https://github.com/PatilShreyas/Foodium) | [PatilShreyas](https://github.com/PatilShreyas) | 🍲Foodium is a sample food blog Android application 📱 built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Dagger 2/Hilt, Architecture Components, MVVM, Room, Retrofit, Moshi, Material Components).

Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel

Last commit: 2 years ago | 🌟 2228
🍴 419
👁️ 57 | 144 | | [Dads](https://github.com/ErickSumargo/Dads) | [ErickSumargo](https://github.com/ErickSumargo) | *BA DUM TSSS*

Tech Stack : Hilt, Coroutines + Flow, UI Testing, Room, ViewModel, WorkManager, Apollo

Last commit: 2 years ago | 🌟 243
🍴 26
👁️ 8 | 145 | | [Noted-Android](https://github.com/YahiaAngelo/Noted-Android) | [YahiaAngelo](https://github.com/YahiaAngelo) | Noted app for android

Tech Stack : Koin dependency injection, Coroutines, Realm db, Material Components, Markdown, Navigation, LiveData, ViewModel

Last commit: 2 years ago | 🌟 94
🍴 12
👁️ 2 | 146 | | [TypiCodeRio](https://github.com/Rarj/TypiCodeRio) | [Rarj](https://github.com/Rarj) |

Tech Stack : Coroutines, Koin, Data Binding, View Binding, Live Data, Retrofit2, GSON

Last commit: 2 years ago | 🌟 0
🍴 0
👁️ 1 | 147 | | [android-modular-architecture](https://github.com/vmadalin/android-modular-architecture) | [vmadalin](https://github.com/vmadalin) | 📚 Sample Android Components Architecture on a modular word focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, Navigation, Paging, Data Binding, LiveData, ViewModel

Last commit: 2 years ago | 🌟 2367
🍴 381
👁️ 99 | 148 | | [expenses](https://github.com/nominalista/expenses) | [nominalista](https://github.com/nominalista) | App written in Kotlin for budget tracking.

Tech Stack : Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, WorkManager, Navigation, LiveData, ViewModel

Last commit: 2 years ago | 🌟 362
🍴 83
👁️ 19 | 149 | | [DrawingsApp](https://github.com/Sharkaboi/DrawingsApp) | [Sharkaboi](https://github.com/Sharkaboi) | An app to add and manage floor plan drawings with markers.

Tech Stack : Dagger Hilt, Coroutines, Room, Dhaval2404/ImagePicker, Subsampling Scale Image View, Navigation, LiveData, ViewModel

Last commit: 2 years ago | 🌟 28
🍴 3
👁️ 1 | 150 | | [topcorn](https://github.com/theapache64/topcorn) | [theapache64](https://github.com/theapache64) | A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with latest hot-trending Android development tools.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel

Last commit: 2 years ago | 🌟 217
🍴 42
👁️ 11 | 151 | | [GithubVisualizer](https://github.com/dheerajkotwani/GithubVisualizer) | [dheerajkotwani](https://github.com/dheerajkotwani) | 📲 Android Application to track any user activity on Github built using the Github Developers API. Used Retrofit to fetch data and MVVM Architecture.

Tech Stack : Retrofit, Firebase Auth, Coroutines, LiveData, ViewModel

Last commit: 2 years ago | 🌟 114
🍴 25
👁️ 3 | 152 | | [wanandroid](https://github.com/jianjunxiao/wanandroid) | [jianjunxiao](https://github.com/jianjunxiao) | Kotlin+JetPack+协程实现的MVVM架构Wanandroid客户端

Tech Stack : Coroutines, Retrofit, Room, LiveData, ViewModel

Last commit: 2 years ago | 🌟 250
🍴 49
👁️ 7 | 153 | | [MixUp](https://github.com/GerardBradshaw/MixUp) | [GerardBradshaw](https://github.com/GerardBradshaw) | An Android app for creating photo collages. This app demonstrates NavigationUI, Espresso testing, Robolectric testing, custom views, low-level UI manipulation, and more.

Tech Stack : Dagger, Coroutines, Testing, Navigation, ColorPicker, ViewModel

Last commit: 3 years ago | 🌟 44
🍴 15
👁️ 5 | 154 | | [roka-recipe-app](https://github.com/fabirt/roka-recipe-app) | [fabirt](https://github.com/fabirt) | Android recipes search App

Tech Stack : Dagger Hilt, Coroutines, Retrofit, Room, LiveData, ViewModel, Paging, Navigation, DataStore

Last commit: 3 years ago | 🌟 63
🍴 14
👁️ 2 | 155 | | [jetpack-release-tracker](https://github.com/lmj0011/jetpack-release-tracker) | [lmj0011](https://github.com/lmj0011) | Stay up to date on the latest AndroidX library releases.

Tech Stack : Coroutines, Testing, Fuel, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 81
🍴 15
👁️ 3 | 156 | | [Bitlue](https://github.com/androiddevnotesforks/Bitlue) | [androiddevnotesforks](https://github.com/androiddevnotesforks) | Bitlue is an app where you can check the Bitcoin's current market price value (Bitcoin + value = Bitlue) and its records.

Tech Stack : Dagger Hilt, Coroutines + Flow, MPAndroidChart, Retrofit, LiveData, ViewModel

Last commit: 3 years ago | 🌟 16
🍴 4
👁️ 1 | 157 | | [flows-guide](https://github.com/Shivamdhuria/flows_guide) | [Shivamdhuria](https://github.com/Shivamdhuria) | Android Application 🐕 based on offline first approach built using Dagger Hilt, Material Motion, Coroutines + Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture.

Tech Stack : Dagger Hilt, Coroutines, Flows, Retrofit, Room, Material Design Components, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 192
🍴 29
👁️ 7 | 158 | | [droidconKE2020App](https://github.com/droidconKE/droidconKE2020App) | [droidconKE](https://github.com/droidconKE) | Android app fully written in Kotlin for droidconKE2020

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, Google Auth, Data Binding, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 120
🍴 43
👁️ 14 | 159 | | [SpaceXFollower](https://github.com/OMIsie11/SpaceXFollower) | [OMIsie11](https://github.com/OMIsie11) | Android app that helps You keep up with SpaceX 🚀

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, WorkManager, MPAndroidChart, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 50
🍴 9
👁️ 3 | 160 | | [PexWalls](https://github.com/GreyLabsDev/PexWalls) | [GreyLabsDev](https://github.com/GreyLabsDev) | Wallpaper app based on pexels.com API. Kotlin/Clean/MVVM-like/SingleActivity

Tech Stack : Koin, Coroutines, RxJava, Retrofit, Room, Navigation, Markwon, LiveData, ViewModel

Last commit: 3 years ago | 🌟 45
🍴 15
👁️ 3 | 161 | | [TrackMyPath](https://github.com/gs-ts/TrackMyPath) | [gs-ts](https://github.com/gs-ts) | An Android app written in Kotlin that demonstrates a clean architecture with MVVM, Fused Location Provider, LifecycleService, and Coroutines. It is used as lab to test new Android features.

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel

Last commit: 3 years ago | 🌟 71
🍴 13
👁️ 3 | 162 | | [BitfinexClient](https://github.com/gs-ts/BitfinexClient) | [gs-ts](https://github.com/gs-ts) | An Android app written in Kotlin that demonstrates a clean architecture with MVVM, websockets using WebScoket client Scarlet, and RxAndroid/RxKotlin.

Tech Stack : Koin, RxJava, Testing, Scarlet, Room, Data Binding, LiveData, ViewModel

Last commit: 3 years ago | 🌟 16
🍴 8
👁️ 2 | 163 | | [Gallerit](https://github.com/auron567/Gallerit) | [auron567](https://github.com/auron567) | A sample Android gallery to search images posted on Reddit, built using modern Android development tools (Architecture Components, MVVM, Coroutines, Flow, Navigation, Retrofit, Room, Koin)

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel

Last commit: 3 years ago | 🌟 220
🍴 21
👁️ 4 | 164 | | [hiya-hiya-hiya](https://github.com/utsmannn/hiya-hiya-hiya) | [utsmannn](https://github.com/utsmannn) | Whatsapp Clone base on Firebase Cloud Messaging

Tech Stack : Koin, Coroutines, Retrofit, Room, Firebase Messaging, Firebase Auth, WorkManager, Google Maps, Paging, JSoup, vanniktech/Emoji, afollestad/inline-activity-result, LiveData, ViewModel

Last commit: 3 years ago | 🌟 176
🍴 47
👁️ 6 | 165 | | [Covid-19-Tracker](https://github.com/HariKulhari06/Covid-19-Tracker) | [HariKulhari06](https://github.com/HariKulhari06) | Android app to track COVID-19 cases in India and globally.

Tech Stack : Dagger Hilt, Coroutines, Retrofit, Room, Firestore, WorkManager, Navigation, MPAndroidChart, LiveData, ViewModel

Last commit: 3 years ago | 🌟 133
🍴 38
👁️ 5 | 166 | | [Cryptotracker](https://github.com/CharlieChristensen/Cryptotracker) | [CharlieChristensen](https://github.com/CharlieChristensen) |

Tech Stack : Dagger, Coroutines, Testing, socketIO, Retrofit, Room, MPAndroidChart, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 4
🍴 1
👁️ 2 | 167 | | [NotesSync](https://github.com/KumarManas04/NotesSync) | [KumarManas04](https://github.com/KumarManas04) | Notes Sync is the answer to your everyday note taking requirements. It can encrypt and sync everything to the user's own Google Drive or Dropbox accounts

Tech Stack : Coroutines, Testing, Room, Google Drive, Dropbox, WorkManager, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 44
🍴 16
👁️ 2 | 168 | | [Photosen](https://github.com/commonpepper/Photosen) | [commonpepper](https://github.com/commonpepper) | Android app for viewing and downloading Flickr photos.

Tech Stack : Retrofit, Room, Paging, LiveData, ViewModel

Last commit: 3 years ago | 🌟 7
🍴 2
👁️ 0 | 169 | | [MoonShot](https://github.com/haroldadmin/MoonShot) | [haroldadmin](https://github.com/haroldadmin) | A SpaceX companion app for Android

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 161
🍴 18
👁️ 9 | 170 | | [PukaPuka](https://github.com/Devansh-Maurya/PukaPuka) | [Devansh-Maurya](https://github.com/Devansh-Maurya) | An Android app to identify books from their covers and give info, built using ML Kit's Text Recognition API, Android Jetpack Libraries and Google Books API

Tech Stack : LiveData, ViewModel, Navigation Components, CameraKit, Firebase ML Kit Text Recognition API, Glide, Volley, Lottie

Last commit: 3 years ago | 🌟 19
🍴 2
👁️ 2 | 171 | | [Football-App](https://github.com/fionicholas/Football-App) | [fionicholas](https://github.com/fionicholas) | :soccer: Football App using MVVM, LiveData, RxJava2, DI, Room, Repository Patern

Tech Stack : LiveData, ViewModel, Retrofit, Room, Koin, RxJava, etc

Last commit: 3 years ago | 🌟 27
🍴 7
👁️ 2 | 172 | | [Knote](https://github.com/edkluivert/Knote) | [edkluivert](https://github.com/edkluivert) | Knote is a standard note taking app

Tech Stack : ViewModel, LiveData, Koin, Room db, Coroutines etc

Last commit: 3 years ago | 🌟 13
🍴 2
👁️ 2 | 173 | | [AwesomeGithub](https://github.com/idisfkj/AwesomeGithub) | [idisfkj](https://github.com/idisfkj) | 🔥Android Github客户端,基于组件化开发,支持账户密码与认证登陆。使用Kotlin语言进行开发,项目架构是基于JetPack&DataBinding的MVVM;项目中使用了Arouter、Retrofit、Coroutine、Glide、Dagger与Hilt等流行开源技术。

Tech Stack : Coroutines, RxJava, Retrofit, Room, WorkManager, Paging, Navigation, Data Binding, ARouter, LiveData, ViewModel

Last commit: 3 years ago | 🌟 228
🍴 44
👁️ 5 | 174 | | [CovidNow](https://github.com/OMIsie11/CovidNow) | [OMIsie11](https://github.com/OMIsie11) | Simple application for tracking Covid-19 info. Stay safe.😷

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, MPAndroidChart, LiveData, ViewModel

Last commit: 3 years ago | 🌟 20
🍴 8
👁️ 2 | 175 | | [LetsChat](https://github.com/satyamurti/LetsChat) | [satyamurti](https://github.com/satyamurti) | 🇮🇳 Open source Indian Chat application with new cool concepts.

Tech Stack : Coroutines, Retrofit, Firestore, Firebase Auth, Firebase Messaging, Firebase Storage, Cloud Functions, Data Binding, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 81
🍴 30
👁️ 6 | 176 | | [Yet-Another-Anime-List](https://github.com/sanmiAde/Yet_Another_Anime_List) | [sanmiAde](https://github.com/sanmiAde) | A personal anime list app that shows currently airing animes, upcoming animes developed using TDD. That's the plan anyway. Essential dependencies are Dagger2 , RxKotlin with RxAndroid, Room, Retrofit, Junit, mockito, mockwebserver, Truth, MVVM , bitrise, Firebase

Tech Stack : Dagger, RxJava, Testing using Fakes, MockWebserver, RxRetrofit, Room, Navigation Components, Lottie, LiveData, ViewModel

Last commit: 3 years ago | 🌟 12
🍴 2
👁️ 3 | 177 | | [PasswordVault](https://github.com/abhinav0612/PasswordVault) | [abhinav0612](https://github.com/abhinav0612) | An application where you can store all your password, bank details, card details in one place and access everything with only one master PIN. The application works totally offline.

Tech Stack : Dagger Hilt, Room, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 31
🍴 9
👁️ 3 | 178 | | [PokemonGo](https://github.com/jnkforks/PokemonGo) | [jnkforks](https://github.com/jnkforks) | Jetpack 实战项目 PokemonGo(神奇宝贝)基于 MVVM 架构和 Repository 设计模式,如果这个仓库对你有帮助,请仓库右上角帮我 star 一下,非常感谢。

Tech Stack : Dagger Hilt, Koin, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Paging, LiveData, ViewModel

Last commit: 3 years ago | 🌟 1
🍴 0
👁️ 1 | 179 | | [AppDevToolbox](https://github.com/andyb129/AppDevToolbox) | [andyb129](https://github.com/andyb129) | Collection of tools for Android app development in one place 🔧 🔨

Tech Stack : Dagger, Coroutines, RxJava, Room, Venom, LiveData, ViewModel

Last commit: 3 years ago | 🌟 21
🍴 5
👁️ 2 | 180 | | [PopularPeople](https://github.com/KhaledSherifSayed/PopularPeople) | [KhaledSherifSayed](https://github.com/KhaledSherifSayed) | A 📱 Popular People app using Shared Elements between fragments with transformation motions based on MVVM (ViewModel, Coroutines, LiveData, Repository, Koin) architecture.

Tech Stack : Koin, Coroutines, Testing, Retrofit, Data Binding, Sandwich, LiveData, ViewModel

Last commit: 3 years ago | 🌟 16
🍴 3
👁️ 3 | 181 | | [Movie](https://github.com/weylar/Movie) | [weylar](https://github.com/weylar) | A simple movie app

Tech Stack : Dagger, Coroutines, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 9
🍴 2
👁️ 2 | 182 | | [wiqaytna-android](https://github.com/Wiqaytna-app/wiqaytna_android) | [Wiqaytna-app](https://github.com/Wiqaytna-app) |

Tech Stack : RxJava, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel

Last commit: 3 years ago | 🌟 161
🍴 66
👁️ 26 | 183 | | [NewsFeed](https://github.com/KevinGitonga/NewsFeed) | [KevinGitonga](https://github.com/KevinGitonga) | A localized News reader Android app powered by newsapi.org

Tech Stack : Coroutines, Retrofit, Room, Pretty Time, LiveData, ViewModel

Last commit: 3 years ago | 🌟 13
🍴 6
👁️ 1 | 184 | | [TukoNewsClient](https://github.com/KevinGitonga/TukoNewsClient) | [KevinGitonga](https://github.com/KevinGitonga) | A simple and sleek Android client consuming the Tuko News Api..I built to demonstrate use of Modern Android development tools - (Kotlin, Coroutines, Architecture Components, MVVM, Room, Retrofit, Material Components). !! https://www.tuko.co.ke/

Tech Stack : Coroutines, Retrofit, Room, LiveData, ViewModel

Last commit: 3 years ago | 🌟 8
🍴 0
👁️ 0 | 185 | | [ArchApp](https://github.com/PhilippeBoisney/ArchApp) | [PhilippeBoisney](https://github.com/PhilippeBoisney) | Simple Android app to show how to design a multi-modules MVVM Android app (fully tested)

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Navigation, LiveData, ViewModel

Last commit: 4 years ago | 🌟 617
🍴 100
👁️ 17 | 186 | | [Heyyoo](https://github.com/ardakazanci/Heyyoo) | [ardakazanci](https://github.com/ardakazanci) | Heyyoo is a sample social media Android application 📱 built to demonstrate use of Modern Android development tools - (Kotlin, Coroutines, Architecture Components, MVVM, Room, Retrofit, Material Components).

Tech Stack : Coroutines, Retrofit, Room, Algolia, LocGetter, EasyValidation, Dexter, Splashy, secure-preferences, Paging, Data Binding, Navigation, LiveData, ViewModel

Last commit: 4 years ago | 🌟 44
🍴 5
👁️ 3 | 187 | | [AppLocker](https://github.com/iammert/AppLocker) | [iammert](https://github.com/iammert) | 🔐 Open source app locker, vault, call blocker application

Tech Stack : Dagger, RxJava, Room, WorkManager, Data Binding, RxPermissions, LiveData, ViewModel

Last commit: 4 years ago | 🌟 445
🍴 106
👁️ 22 | 188 | | [software-engineering-daily-android](https://github.com/SoftwareEngineeringDaily/software-engineering-daily-android) | [SoftwareEngineeringDaily](https://github.com/SoftwareEngineeringDaily) | Android client for Software Engineering Daily

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Android-Permissions, LiveData, ViewModel

Last commit: 4 years ago | 🌟 88
🍴 29
👁️ 15 | 189 | | [Social-Note](https://github.com/mars-amn/Social-Note) | [mars-amn](https://github.com/mars-amn) | Social Note - Note-taking, sharing, time & location reminder

Tech Stack : Koin, RxJava, Room, Firestore, Firebase Auth, Firebase Storage, Firebase Messaging, WorkManager, Data Binding, Paging, LiveData, ViewModel

Last commit: 4 years ago | 🌟 56
🍴 9
👁️ 3 | 190 | | [youtube-dl-android](https://github.com/cuongpm/youtube-dl-android) | [cuongpm](https://github.com/cuongpm) | 📦📦Video downloader for Android - Download videos from Youtube, Facebook, Twitter, Instagram, Dailymotion, Vimeo and more than 1000 other sites

Tech Stack : Dagger, RxJava, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel

Last commit: 4 years ago | 🌟 476
🍴 136
👁️ 20 | 191 | | [file.io-Android-Client](https://github.com/rumaan/file.io-Android-Client) | [rumaan](https://github.com/rumaan) | ☁️ Unofficial file.io Android App 📱

Tech Stack : Testing, Fuel, Room, WorkManager, Navigation, PermissionsDispatcher, LiveData, ViewModel

Last commit: 5 years ago | 🌟 21
🍴 13
👁️ 3 | 192 | 193 | #### Clean Architecture 194 | 195 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 196 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 197 | | [android-showcase](https://github.com/igorwojda/android-showcase) | [igorwojda](https://github.com/igorwojda) | 💎 Android application following best practices: Kotlin, Coroutines, JetPack, Clean Architecture, Feature Modules, Tests, MVVM, DI, Static Analysis...

Tech Stack : Kodein, Coroutines, Testing, Retrofit, KAndroid, Lottie, Detekt, Navigation, Dynamic Feature Modules, LiveData, ViewModel

Last commit: 19 hours ago | 🌟 6157
🍴 868
👁️ 118 | 198 | | [Rick-and-Morty](https://github.com/akhilesh0707/Rick-and-Morty) | [akhilesh0707](https://github.com/akhilesh0707) | The Rick And Morty - MVVM with a clean architecture approach using some of the best practices in Android Development.

Tech Stack : Kotlin, Coroutines, Flow, Dagger-Hilt, Kotlin-DSL, LiveData, Lifecycle, ViewModel, Room, Navigation, Data Binding, Material-Components, Retrofit, OkHttp, Moshi, Timber, Glide

Last commit: 4 weeks ago | 🌟 95
🍴 23
👁️ 3 | 199 | | [BLTaxi](https://github.com/VladimirWrites/BLTaxi) | [VladimirWrites](https://github.com/VladimirWrites) | 🚕 BL Taxi is a simple app for calling a taxi in the city Banja Luka built using modern Android development tools

Tech Stack : Koin, Retrofit, Room, Data Binding, LiveData, View Model, Work Manager, Material Components

Last commit: 2 months ago | 🌟 348
🍴 39
👁️ 7 | 200 | | [SpaceX-prepare-for-Clean-Architecture-liftoff](https://github.com/ferPrieto/SpaceX-prepare-for-Clean-Architecture-liftoff) | [ferPrieto](https://github.com/ferPrieto) | Clean Architecture Modular Project: MVVM + Jetpack Compose + Coroutines + Flows + Dagger2 + LiveData + UnitTests + UITests + Screenshot Tests + MockWebServer

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel

Last commit: 5 months ago | 🌟 631
🍴 84
👁️ 6 | 201 | | [CoolWeather](https://github.com/akoufa/CoolWeather) | [akoufa](https://github.com/akoufa) | Weather App that uses Android best practices. Android Jetpack, clean architecture. Written in Kotlin

Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel

Last commit: 6 months ago | 🌟 190
🍴 18
👁️ 10 | 202 | | [Slootnime-APP](https://github.com/bakharaalief/Slootnime-APP) | [bakharaalief](https://github.com/bakharaalief) | Slootnime is simple android app to learn graphql API with Apollo and clean architecture

Tech Stack : Kotlin, Coroutine, Dagger-Hilt, LiveData, Lifecycle, ViewModel, Apollo, Glide, Pagging, Lottie

Last commit: 9 months ago | 🌟 3
🍴 0
👁️ 2 | 203 | | [Android-Kotlin-Clean-Architecture](https://github.com/sanogueralorenzo/Android-Kotlin-Clean-Architecture) | [sanogueralorenzo](https://github.com/sanogueralorenzo) | Android Sample Clean Architecture App written in Kotlin

Tech Stack : Dagger Hilt, Testing, RxJava, Retrofit, AssistedInject, Epoxy, RxPaper, MvRx, ViewModel

Last commit: 1 year ago | 🌟 1733
🍴 329
👁️ 56 | 204 | | [PropertyFindAR](https://github.com/SmartToolFactory/PropertyFindAR) | [SmartToolFactory](https://github.com/SmartToolFactory) | 🏘 🎃 Real Estate Sample App with RxJava3+Coroutines Flow, Dynamic Feature Modules, Dagger Hilt, Offline First, ConcatAdapter, Animations and tests for Room, Retrofit, useCase and ViewModels with TDD.

Tech Stack : RxJava3, Coroutines Flow, Retrofit, Room, Dagger Hilt, Dynamic Feature Modules, ConcatAdapter, LiveData, ViewModel, SavedStateHandle, WorkManager, Glide, Lottie, MpCharts, MockWebServer, MockK, FlowTestObserver, ktLint, detekt, Git Hooks, Git Flow

Last commit: 2 years ago | 🌟 254
🍴 36
👁️ 14 | 205 | | [Theatre](https://github.com/andremion/Theatre) | [andremion](https://github.com/andremion) | Pet project using Clean Architecture + MVVM + Reactive Extensions + Android Architecture Components. The data are fetched from LondonTheatreDirect API. 🎭

Tech Stack : Dagger, RxJava, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel

Last commit: 2 years ago | 🌟 646
🍴 97
👁️ 27 | 206 | | [Android-Clean-Architecture](https://github.com/happysingh23828/Android-Clean-Architecture) | [happysingh23828](https://github.com/happysingh23828) | This is a sample movie list Android application built to demonstrate use of Clean Architecture tools. Dedicated to all Android Developers - (Kotlin, MVVM, Clean Architecture, Rx-Java, Dagger, OkHttp, Unit Testing, SOLID principles, Code Coverage)

Tech Stack : Dagger, Unit Testing for modules, Mockito, RxJava, Retrofit, Room, CI-CD, SOLID, Code Coverage, Jacoco, Detekt, ktlint, Stetho, LiveData, ViewModel

Last commit: 2 years ago | 🌟 295
🍴 51
👁️ 5 | 207 | | [android-clean-architecture](https://github.com/sansets/android-clean-architecture) | [sansets](https://github.com/sansets) | Sample for Android Clean Architecture.

Tech Stack : Navigation Component, Dagger, Coroutines Flow, Room, Retrofit, LiveData, ViewModel, View Binding, Dynamic Feature Modules.

Last commit: 2 years ago | 🌟 122
🍴 14
👁️ 2 | 208 | | [Clean-MVVM-ArchComponents](https://github.com/odaridavid/Clean-MVVM-ArchComponents) | [odaridavid](https://github.com/odaridavid) | 👽 Built with MVVM pattern, Koin , Coroutines + Flows ,Architecture Components, Data Binding , Firebase , Unit/UI Tests ,Motion Layout

Tech Stack : Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Motion Layout, LiveData, ViewModel

Last commit: 2 years ago | 🌟 654
🍴 112
👁️ 23 | 209 | | [CoronavirusWorldStatus](https://github.com/HamdiBoumaiza/CoronavirusWorldStatus) | [HamdiBoumaiza](https://github.com/HamdiBoumaiza) | An app to stay up to date with the latest stats of the coronavirus , using Kotlin with MVVM ,Coroutines , Android Architecture Components and Dagger

Tech Stack : Dagger, Coroutines, Retrofit, Room, LiveData, ViewModel , Stetho

Last commit: 3 years ago | 🌟 22
🍴 2
👁️ 1 | 210 | 211 | ### MVI 212 | 213 | #### Normal 214 | 215 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 216 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 217 | | [ComicReaderApp-MVI-Coroutine-RxKotlin-Jetpack](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack) | [hoc081098](https://github.com/hoc081098) | ⚡️Comic reader app 📘 Learning MVVM / MVI with :cyclone: RxKotlin, Retrofit, Kotlinx Coroutine, Work Manager, Room, Firebase, AndroidX Startup, Clean Architecture, Arrow.Kt Functional Programming ... ❄️ androidx-startup, androidx-room, androidx-viewmodel, arrow-kt

Tech Stack : Koin, Coroutines, RxJava, Retrofit, Room, Firestore, Firebase Auth, Firebase Storage, WorkManager, Navigation, Paging, LiveData, ViewModel

Last commit: 5 days ago | 🌟 239
🍴 46
👁️ 7 | 218 | | [Open-API-Android-App](https://github.com/mitchtabian/Open-API-Android-App) | [mitchtabian](https://github.com/mitchtabian) | Kotlin, MVI, Hilt, Retrofit2, Coroutines, Room Persistence, REST API, Token Authentication

Tech Stack : Dagger, Coroutines, Retrofit, Room, Navigation, LiveData, ViewModel

Last commit: 7 months ago | 🌟 650
🍴 225
👁️ 26 | 219 | | [GameDealz](https://github.com/R4md4c/GameDealz) | [R4md4c](https://github.com/R4md4c) | A non-official Android client for IsThereAnyDeal.com

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, acra, fastAdapter, Paging, JSoup, dropbox/Store, LiveData, ViewModel

Last commit: 1 year ago | 🌟 27
🍴 2
👁️ 4 | 220 | | [NewsFeed-MVI-Dagger](https://github.com/HadySalhab/NewsFeed-MVI-Dagger) | [HadySalhab](https://github.com/HadySalhab) | Android News Application built in kotlin: MVI+Dagger+NetworkBoundResource+ViewModel+Livedata.

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel

Last commit: 4 years ago | 🌟 12
🍴 7
👁️ 2 | 221 | 222 | #### Clean Architecture 223 | 224 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 225 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 226 | | [StarWarsSearch-MVI](https://github.com/Ezike/StarWarsSearch-MVI) | [Ezike](https://github.com/Ezike) | Star wars sample android project showcasing the use of View components for rendering UI in Fragments and Activities. Uses Android Jetpack, clean architecture with MVI (Uni-directional data flow), dagger hilt, and kotlin coroutines with StateFlow

Tech Stack : Jetpack, Dagger hilt, Coroutines & StateFlow, Room, Retrofit, FlowBinding

Last commit: 2 months ago | 🌟 197
🍴 29
👁️ 8 | 227 | | [CleanRxArchitecture](https://github.com/lopspower/CleanRxArchitecture) | [lopspower](https://github.com/lopspower) | Clean Rx Kotlin Architecture sample on GitHub Api 🚀

Tech Stack : Dagger, RxJava, Retrofit, Room, Clean Architecture, LiveData, ViewModel

Last commit: 1 year ago | 🌟 387
🍴 49
👁️ 15 | 228 | | [Baking-App-Kotlin](https://github.com/Ezike/Baking-App-Kotlin) | [Ezike](https://github.com/Ezike) | Android architecture sample with dynamic feature modularisation, clean architecture with MVI (Uni-directional data flow), dagger hilt, DFM Navigation, kotlin coroutines with StateFlow and Exo player.

Tech Stack : Dagger hilt, Coroutines & StateFlow, Unit Testing, Retrofit, DFM Navigation, FlowBinding, Exoplayer

Last commit: 2 years ago | 🌟 440
🍴 82
👁️ 11 | 229 | | [Clean-Notes](https://github.com/mitchtabian/Clean-Notes) | [mitchtabian](https://github.com/mitchtabian) | Clean Architecture by layer

Tech Stack : Dagger, Coroutines, Testing, Retrofit, Room, Firestore, Firebase Auth, Navigation, Markdown Processor, LiveData, ViewModel

Last commit: 3 years ago | 🌟 496
🍴 137
👁️ 17 | 230 | 231 | ### MVP 232 | 233 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 234 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 235 | | [tachiyomi](https://github.com/tachiyomiorg/tachiyomi) | [tachiyomiorg](https://github.com/tachiyomiorg) | Free and open source manga reader for Android.

Tech Stack : Inorichi injekt, Coroutines, RxJava, Testing, Retrofit, DiskLruCache, Jsoup, WorkManager, Duktape Android, Conductor

Last commit: 2 hours ago | 🌟 24848
🍴 2670
👁️ 589 | 236 | | [UTair-MVP-Sample](https://github.com/ImangazalievM/UTair-MVP-Sample) | [ImangazalievM](https://github.com/ImangazalievM) | Android Clean Architecture + MVP Sample written in Kotlin

Tech Stack : Clean Architecture, Coroutines, RxJava 2, Coroutines, Toothpick, Moxy, Unit-tests (Spek, Mockk), UI-tests (Kaspresso)

Last commit: 3 years ago | 🌟 30
🍴 5
👁️ 4 | 237 | 238 | ## Other 239 | 240 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 241 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 242 | | [shadowsocks-android](https://github.com/shadowsocks/shadowsocks-android) | [shadowsocks](https://github.com/shadowsocks) | A shadowsocks client for Android

Tech Stack : Testing, Room, Firebase Ads, WorkManager

Last commit: 2 weeks ago | 🌟 34025
🍴 11641
👁️ 1574 | 243 | | [countin](https://github.com/Husseinfo/countin) | [Husseinfo](https://github.com/Husseinfo) | An Android Application that remembers your life events.

Tech Stack : Room, Coroutines, Compose, Material3

Last commit: 9 months ago | 🌟 6
🍴 0
👁️ 1 | 244 | | [kotlinbaseproject](https://github.com/aasif1297/kotlinbaseproject) | [aasif1297](https://github.com/aasif1297) |

Tech Stack : Foursquare APIs, Koin, Coroutines, Moshi, Room, Retrofit, Viewbinding, Google Play Services

Last commit: 12 months ago | 🌟 0
🍴 0
👁️ 1 | 245 | | [Scarlet-Notes](https://github.com/BijoySingh/Scarlet-Notes) | [BijoySingh](https://github.com/BijoySingh) | [Discontinued and Unsupported Project] Simple yet powerful rich note taking android application, with a lot of flexibilty of usage

Tech Stack : Dagger, Coroutines, Room, Firebase Auth, Firebase Database, Paging, Navigation, Evernote android-job, Facebook Litho, Facebook SoLoader, Biometric

Last commit: 2 years ago | 🌟 345
🍴 97
👁️ 19 | 246 | | [Screenaway](https://github.com/DimaBrody/Screenaway) | [DimaBrody](https://github.com/DimaBrody) | Phone Screen Forced Locker

Tech Stack : Room, Play Install Referrer Library

Last commit: 3 years ago | 🌟 15
🍴 2
👁️ 1 | 247 | 248 | ## :books: Tech Stack/Libraries 249 | 250 | - [Dagger](https://github.com/google/dagger), [Koin](https://github.com/InsertKoinIO/koin), [Kodein](https://github.com/Kodein-Framework/Kodein-DI), [Inorichi Injekt](https://jitpack.io/p/inorichi/injekt), [Coroutines](https://github.com/Kotlin/kotlinx.coroutines), [Rx](https://github.com/ReactiveX/RxJava), [Testing](https://developer.android.com/studio/test), [Retrofit](https://github.com/square/retrofit), [Fuel](https://github.com/kittinunf/fuel), [Room](https://developer.android.com/topic/libraries/architecture/room), [Realm](https://github.com/realm/realm-java), [Firebase Products](https://firebase.google.com/), [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager), [ExoPlayer](https://github.com/google/ExoPlayer), [Paging](https://developer.android.com/topic/libraries/architecture/paging), [Navigation](https://developer.android.com/guide/navigation), [Lottie](https://github.com/airbnb/lottie-android), [Zoomy](https://github.com/imablanco/Zoomy), [JSoup](https://jsoup.org/download), [js-evaluator-for-android](https://github.com/evgenyneu/js-evaluator-for-android), [Algolia Search](https://www.algolia.com/doc/guides/getting-started/quick-start/tutorials/quick-start-with-the-api-client/android/), [Conductor](https://github.com/bluelinelabs/Conductor), [Call Control DataShare](https://github.com/CallControl/Call-Control-DataShare), [libphonenumber-android](https://github.com/MichaelRocks/libphonenumber-android), [Mixpanel Android](https://github.com/mixpanel/mixpanel-android), [Venom](https://github.com/YarikSOffice/venom), [FlowLayout](https://github.com/nex3z/FlowLayout), [ARCore](https://developers.google.com/ar/discover), [GSYVideoPlayer](https://github.com/CarGuo/GSYVideoPlayer), [PermissionX](https://github.com/guolindev/PermissionX), [EventBus](https://github.com/greenrobot/EventBus), [Dynamicanimation](https://developer.android.com/jetpack/androidx/releases/dynamicanimation), [Google Drive](https://developers.google.com/drive/android), [Dropbox](https://github.com/dropbox), [MPAndroidChart](https://github.com/PhilJay/MPAndroidChart), [Facebook Products](https://developers.facebook.com/docs/facebook-login/android/), [PayPal](https://developer.paypal.com/docs/), [Stripe](https://github.com/stripe/stripe-android), [Easy Permissions](https://github.com/googlesamples/easypermissions), [socketIO](https://socket.io/), [Dexter](https://github.com/Karumi/Dexter), [Tikxml](https://github.com/Tickaroo/tikxml), [Markwon](https://github.com/noties/Markwon), [Scarlet](https://github.com/Tinder/Scarlet), [Android-Permissions](https://github.com/nabinbhandari/Android-Permissions), [RxPermissions](https://github.com/tbruyelle/RxPermissions), [android-upload-service](https://github.com/gotev/android-upload-service), [PermissionsDispatcher](https://github.com/permissions-dispatcher/PermissionsDispatcher), [ShortcutBadger](https://github.com/leolin310148/ShortcutBadger), [ARouter](https://github.com/alibaba/ARouter), [Sandwich](https://github.com/skydoves/Sandwich), [Calendar view](https://github.com/kizitonwose/CalendarView), [Biometric](https://developer.android.com/jetpack/androidx/releases/biometric), [Pretty Time](https://github.com/ocpsoft/prettytime), [Markdown Processor](https://github.com/yydcdut/RxMarkdown), [DiskLruCache](https://github.com/JakeWharton/DiskLruCache), [Duktape Android](https://github.com/square/duktape-android), [Evernote android-job](https://github.com/evernote/android-job), [Facebook Litho](https://github.com/facebook/litho), [Facebook SoLoader](https://github.com/facebook/SoLoader), [Data Binding](https://developer.android.com/topic/libraries/data-binding), [TimelineView](https://github.com/anacoimbrag/timeline-view) 251 | 252 | ## :memo: Contributing 253 | 254 | See [contributing.md](CONTRIBUTING.md) 255 | 256 | ## :moyai: Core Contributors 257 | 258 | - [@theapache64](https://github.com/theapache64) [automated this repo](https://github.com/androiddevnotes/awesome-android-kotlin-apps/pull/51) and designed a beautiful layout for awesome-android-kotlin-apps. 259 | 260 | ## :hatching_chick: Contributors 261 | 262 | Contributors are cool people. 263 | 264 | If you contributed and are missing in this list, please send a PR including your entry in the list below! 🐣 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 |
KevinGitongaHamdiBoumaizaDevansh-MauryaAnnie-Sultanaiamsurajgiri
saifali25Tristankluivertanacoimbragalpharomeo911adityakamath16
ImangazalievMEzikeviveksharma2382000sridevshenoysatyamurti
sansetssanmiAdesaif71ryanrvldorizmaulana
pedrofsnodaridavidihilalahmadigorescodrohappysingh23828
fionicholasenginebaidheerajkotwaniauron567abhinav0612
YahiaAngeloVladimirWritesSpikeysanjuSmartToolFactoryShivamdhuria
PatilShreyasPHELATMargu86MageshVSKhaledSherifSayed
324 | 325 | ## :computer: Find us on 326 | 327 |
328 | GitHub / Discord / Twitter / Instagram / YouTube / Medium 329 |

330 | androiddevnotes logo 331 |
332 | 333 | 334 | 339 | 340 | -------------------------------------------------------------------------------- /README.model.md: -------------------------------------------------------------------------------- 1 | 2 |

Awesome Android Kotlin Apps


3 | 4 |

5 | :eyeglasses: A curated list of awesome android kotlin apps by open-source contributors. 6 |

7 |
8 | 9 |

10 | Awesome Android Kotlin Apps Count badge 11 | Android Language Badge 12 | Kotlin Language Badge 13 | androiddevnotes GitHub badge 14 | 15 |

16 | 17 |
18 |

19 | androiddevnotes logo 20 |


21 | 22 | 23 | **Awesome Android Kotlin Apps** aims to be the starting point for developers to find an Android app with a particular Tech Stack / Libraries. 24 | 25 | ___🔃 Last updated : $LAST_UPDATED___ 26 | 27 | ## Contents 28 | 29 | :art: [**Pattern**](#art-pattern) 30 | 31 | 32 | - [Jetpack Compose Apps](#jetpack-compose-apps) 33 | 34 | - [Model View ViewModel (MVVM)](#mvvm) 35 | 36 | - [Normal](#normal) 37 | - [Clean Architecture](#clean-architecture) 38 | 39 | - [Model View Intent (MVI)](#mvi) 40 | 41 | - [Normal](#normal-1) 42 | - [Clean Architecture](#clean-architecture-1) 43 | 44 | - [Model View Presenter (MVP)](#mvp) 45 | 46 | - [Model View Controller (MVC) and Other Patterns](#other) 47 | 48 | 49 | :books: [**Tech Stack/Libraries**](#books-tech-stacklibraries) 50 | 51 | :memo: [**Contributing**](#memo-contributing) 52 | 53 | :moyai: [**Core Contributors**](#moyai-core-contributors) 54 | 55 | 56 | ## :art: Pattern 57 | 58 | ### Jetpack Compose Apps 59 | 60 | $JETPACK_COMPOSE_REPOS 61 | 62 | ### MVVM 63 | 64 | #### Normal 65 | 66 | $MVVM_NORMAL_REPOS 67 | 68 | #### Clean Architecture 69 | 70 | $MVVM_CLEAN_ARCH_REPOS 71 | 72 | ### MVI 73 | 74 | #### Normal 75 | 76 | $MVI_NORMAL_REPOS 77 | 78 | #### Clean Architecture 79 | 80 | $MVI_CLEAN_ARCH_REPOS 81 | 82 | ### MVP 83 | 84 | $MVP_REPOS 85 | 86 | ## Other 87 | 88 | $OTHER_REPOS 89 | 90 | ## :books: Tech Stack/Libraries 91 | 92 | - [Dagger](https://github.com/google/dagger), [Koin](https://github.com/InsertKoinIO/koin), [Kodein](https://github.com/Kodein-Framework/Kodein-DI), [Inorichi Injekt](https://jitpack.io/p/inorichi/injekt), [Coroutines](https://github.com/Kotlin/kotlinx.coroutines), [Rx](https://github.com/ReactiveX/RxJava), [Testing](https://developer.android.com/studio/test), [Retrofit](https://github.com/square/retrofit), [Fuel](https://github.com/kittinunf/fuel), [Room](https://developer.android.com/topic/libraries/architecture/room), [Realm](https://github.com/realm/realm-java), [Firebase Products](https://firebase.google.com/), [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager), [ExoPlayer](https://github.com/google/ExoPlayer), [Paging](https://developer.android.com/topic/libraries/architecture/paging), [Navigation](https://developer.android.com/guide/navigation), [Lottie](https://github.com/airbnb/lottie-android), [Zoomy](https://github.com/imablanco/Zoomy), [JSoup](https://jsoup.org/download), [js-evaluator-for-android](https://github.com/evgenyneu/js-evaluator-for-android), [Algolia Search](https://www.algolia.com/doc/guides/getting-started/quick-start/tutorials/quick-start-with-the-api-client/android/), [Conductor](https://github.com/bluelinelabs/Conductor), [Call Control DataShare](https://github.com/CallControl/Call-Control-DataShare), [libphonenumber-android](https://github.com/MichaelRocks/libphonenumber-android), [Mixpanel Android](https://github.com/mixpanel/mixpanel-android), [Venom](https://github.com/YarikSOffice/venom), [FlowLayout](https://github.com/nex3z/FlowLayout), [ARCore](https://developers.google.com/ar/discover), [GSYVideoPlayer](https://github.com/CarGuo/GSYVideoPlayer), [PermissionX](https://github.com/guolindev/PermissionX), [EventBus](https://github.com/greenrobot/EventBus), [Dynamicanimation](https://developer.android.com/jetpack/androidx/releases/dynamicanimation), [Google Drive](https://developers.google.com/drive/android), [Dropbox](https://github.com/dropbox), [MPAndroidChart](https://github.com/PhilJay/MPAndroidChart), [Facebook Products](https://developers.facebook.com/docs/facebook-login/android/), [PayPal](https://developer.paypal.com/docs/), [Stripe](https://github.com/stripe/stripe-android), [Easy Permissions](https://github.com/googlesamples/easypermissions), [socketIO](https://socket.io/), [Dexter](https://github.com/Karumi/Dexter), [Tikxml](https://github.com/Tickaroo/tikxml), [Markwon](https://github.com/noties/Markwon), [Scarlet](https://github.com/Tinder/Scarlet), [Android-Permissions](https://github.com/nabinbhandari/Android-Permissions), [RxPermissions](https://github.com/tbruyelle/RxPermissions), [android-upload-service](https://github.com/gotev/android-upload-service), [PermissionsDispatcher](https://github.com/permissions-dispatcher/PermissionsDispatcher), [ShortcutBadger](https://github.com/leolin310148/ShortcutBadger), [ARouter](https://github.com/alibaba/ARouter), [Sandwich](https://github.com/skydoves/Sandwich), [Calendar view](https://github.com/kizitonwose/CalendarView), [Biometric](https://developer.android.com/jetpack/androidx/releases/biometric), [Pretty Time](https://github.com/ocpsoft/prettytime), [Markdown Processor](https://github.com/yydcdut/RxMarkdown), [DiskLruCache](https://github.com/JakeWharton/DiskLruCache), [Duktape Android](https://github.com/square/duktape-android), [Evernote android-job](https://github.com/evernote/android-job), [Facebook Litho](https://github.com/facebook/litho), [Facebook SoLoader](https://github.com/facebook/SoLoader), [Data Binding](https://developer.android.com/topic/libraries/data-binding), [TimelineView](https://github.com/anacoimbrag/timeline-view) 93 | 94 | ## :memo: Contributing 95 | 96 | See [contributing.md](CONTRIBUTING.md) 97 | 98 | ## :moyai: Core Contributors 99 | 100 | - [@theapache64](https://github.com/theapache64) [automated this repo](https://github.com/androiddevnotes/awesome-android-kotlin-apps/pull/51) and designed a beautiful layout for awesome-android-kotlin-apps. 101 | 102 | ## :hatching_chick: Contributors 103 | 104 | Contributors are cool people. 105 | 106 | If you contributed and are missing in this list, please send a PR including your entry in the list below! 🐣 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 |
KevinGitongaHamdiBoumaizaDevansh-MauryaAnnie-Sultanaiamsurajgiri
saifali25Tristankluivertanacoimbragalpharomeo911adityakamath16
ImangazalievMEzikeviveksharma2382000sridevshenoysatyamurti
sansetssanmiAdesaif71ryanrvldorizmaulana
pedrofsnodaridavidihilalahmadigorescodrohappysingh23828
fionicholasenginebaidheerajkotwaniauron567abhinav0612
YahiaAngeloVladimirWritesSpikeysanjuSmartToolFactoryShivamdhuria
PatilShreyasPHELATMargu86MageshVSKhaledSherifSayed
166 | 167 | ## :computer: Find us on 168 | 169 |
170 | GitHub / Discord / Twitter / Instagram / YouTube / Medium 171 |

172 | androiddevnotes logo 173 |
174 | -------------------------------------------------------------------------------- /assets/android.svg: -------------------------------------------------------------------------------- 1 | Layer 1 -------------------------------------------------------------------------------- /assets/androiddevnotes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotes/awesome-android-kotlin-apps/fc067f5dae4159d7d39f74f1b14d23087c5098aa/assets/androiddevnotes.png -------------------------------------------------------------------------------- /assets/count.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/kotlin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /awesome-android-kotlin-apps.main.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotes/awesome-android-kotlin-apps/fc067f5dae4159d7d39f74f1b14d23087c5098aa/awesome-android-kotlin-apps.main.jar -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | id 'org.jetbrains.kotlin.jvm' version '1.3.72' 4 | } 5 | apply plugin: 'kotlin-kapt' 6 | 7 | 8 | group 'com.github' 9 | version '1.0-SNAPSHOT' 10 | 11 | repositories { 12 | mavenCentral() 13 | } 14 | 15 | dependencies { 16 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" 17 | testCompile group: 'junit', name: 'junit', version: '4.12' 18 | 19 | // Moshi:A modern JSON API for Android and Java 20 | implementation 'com.squareup.moshi:moshi:1.11.0' 21 | 22 | // Moshi Kotlin Codegen:A modern JSON API for Android and Java 23 | kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.11.0' 24 | 25 | // OkHttp:Square’s meticulous HTTP client for Java and Kotlin. 26 | implementation 'com.squareup.okhttp3:okhttp:4.10.0-RC1' 27 | 28 | // Retrofit:A type-safe HTTP client for Android and Java. 29 | implementation 'com.squareup.retrofit2:retrofit:2.9.0' 30 | 31 | // Dagger 32 | api 'com.google.dagger:dagger:2.27' 33 | kapt 'com.google.dagger:dagger-compiler:2.27' 34 | 35 | // Kotlinx Coroutines Core:Coroutines support libraries for Kotlin 36 | implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' 37 | 38 | // Converter: Moshi:A Retrofit Converter which uses Moshi for serialization. 39 | implementation 'com.squareup.retrofit2:converter-moshi:2.9.0' 40 | 41 | // OkHttp Logging Interceptor:Square’s meticulous HTTP client for Java and Kotlin. 42 | implementation 'com.squareup.okhttp3:logging-interceptor:4.10.0-RC1' 43 | 44 | // PrettyTime Core:PrettyTime Core 45 | implementation 'org.ocpsoft.prettytime:prettytime:4.0.6.Final' 46 | } 47 | 48 | compileKotlin { 49 | kotlinOptions.jvmTarget = "1.8" 50 | } 51 | compileTestKotlin { 52 | kotlinOptions.jvmTarget = "1.8" 53 | } -------------------------------------------------------------------------------- /gpm.json: -------------------------------------------------------------------------------- 1 | { 2 | "added": [ 3 | { 4 | "id": 1, 5 | "type": "implementation", 6 | "installed_name": "moshi", 7 | "gpm_dep": { 8 | "artifact_id": "moshi", 9 | "default_type": "implementation", 10 | "docs": "https://mvnrepository.com/artifact/com.squareup.moshi/moshi", 11 | "get_from": "Central", 12 | "group_id": "com.squareup.moshi", 13 | "name": "Moshi", 14 | "description": "A modern JSON API for Android and Java" 15 | } 16 | }, 17 | { 18 | "id": 2, 19 | "type": "kapt", 20 | "installed_name": "moshi-codegen", 21 | "gpm_dep": { 22 | "artifact_id": "moshi-kotlin-codegen", 23 | "default_type": "implementation", 24 | "docs": "https://mvnrepository.com/artifact/com.squareup.moshi/moshi-kotlin-codegen", 25 | "get_from": "Central", 26 | "group_id": "com.squareup.moshi", 27 | "name": "Moshi Kotlin Codegen", 28 | "description": "A modern JSON API for Android and Java" 29 | } 30 | }, 31 | { 32 | "id": 3, 33 | "type": "implementation", 34 | "installed_name": "egit-github", 35 | "gpm_dep": { 36 | "artifact_id": "org.eclipse.egit.github.core", 37 | "default_type": "implementation", 38 | "docs": "https://mvnrepository.com/artifact/org.eclipse.mylyn.github/org.eclipse.egit.github.core", 39 | "get_from": "Central", 40 | "group_id": "org.eclipse.mylyn.github", 41 | "name": "Eclipse EGit GitHub API Core", 42 | "description": "Eclipse EGit GitHub API Core" 43 | } 44 | }, 45 | { 46 | "id": 4, 47 | "type": "implementation", 48 | "installed_name": "okhttp", 49 | "gpm_dep": { 50 | "artifact_id": "okhttp", 51 | "default_type": "implementation", 52 | "docs": "https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp", 53 | "get_from": "Central", 54 | "group_id": "com.squareup.okhttp3", 55 | "name": "OkHttp", 56 | "description": "Square’s meticulous HTTP client for Java and Kotlin." 57 | } 58 | }, 59 | { 60 | "id": 5, 61 | "type": "implementation", 62 | "installed_name": "json", 63 | "gpm_dep": { 64 | "artifact_id": "json", 65 | "default_type": "implementation", 66 | "docs": "https://mvnrepository.com/artifact/org.json/json", 67 | "get_from": "Central", 68 | "group_id": "org.json", 69 | "name": "JSON In Java", 70 | "description": "JSON is a light-weight, language independent, data interchange format.See http://www.JSON.org/The files in this package implement JSON encoders/decoders in Java.It also includes the capability to convert between JSON and XML, HTTPheaders, Cookies, and CDL.This is a reference implementation. There is a large number of JSON packagesin Java. Perhaps someday the Java community will standardize on one. Untilthen, choose carefully.The license includes this restriction: \"The software ..." 71 | } 72 | }, 73 | { 74 | "id": 6, 75 | "type": "implementation", 76 | "installed_name": "retrofit2", 77 | "gpm_dep": { 78 | "artifact_id": "retrofit", 79 | "default_type": "implementation", 80 | "docs": "https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit", 81 | "get_from": "Central", 82 | "group_id": "com.squareup.retrofit2", 83 | "name": "Retrofit", 84 | "description": "A type-safe HTTP client for Android and Java." 85 | } 86 | }, 87 | { 88 | "id": 7, 89 | "type": "implementation", 90 | "installed_name": "coroutines", 91 | "gpm_dep": { 92 | "artifact_id": "kotlinx-coroutines-core", 93 | "default_type": "implementation", 94 | "docs": "https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core", 95 | "get_from": "Central", 96 | "group_id": "org.jetbrains.kotlinx", 97 | "name": "Kotlinx Coroutines Core", 98 | "description": "Coroutines support libraries for Kotlin" 99 | } 100 | }, 101 | { 102 | "id": 8, 103 | "type": "implementation", 104 | "installed_name": "moshi-converter", 105 | "gpm_dep": { 106 | "artifact_id": "converter-moshi", 107 | "default_type": "implementation", 108 | "docs": "https://mvnrepository.com/artifact/com.squareup.retrofit2/converter-moshi", 109 | "get_from": "Central", 110 | "group_id": "com.squareup.retrofit2", 111 | "name": "Converter: Moshi", 112 | "description": "A Retrofit Converter which uses Moshi for serialization." 113 | } 114 | }, 115 | { 116 | "id": 9, 117 | "type": "implementation", 118 | "installed_name": "okhttp3-logging", 119 | "gpm_dep": { 120 | "artifact_id": "logging-interceptor", 121 | "default_type": "implementation", 122 | "docs": "https://mvnrepository.com/artifact/com.squareup.okhttp3/logging-interceptor", 123 | "get_from": "Central", 124 | "group_id": "com.squareup.okhttp3", 125 | "name": "OkHttp Logging Interceptor", 126 | "description": "Square’s meticulous HTTP client for Java and Kotlin." 127 | } 128 | }, 129 | { 130 | "id": 10, 131 | "type": "implementation", 132 | "installed_name": "prettytime", 133 | "gpm_dep": { 134 | "artifact_id": "prettytime", 135 | "default_type": "implementation", 136 | "docs": "https://mvnrepository.com/artifact/org.ocpsoft.prettytime/prettytime", 137 | "get_from": "Central", 138 | "group_id": "org.ocpsoft.prettytime", 139 | "name": "PrettyTime Core", 140 | "description": "PrettyTime Core" 141 | } 142 | } 143 | ] 144 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | kotlin.code.style=official 2 | kotlin.code.style=official -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotes/awesome-android-kotlin-apps/fc067f5dae4159d7d39f74f1b14d23087c5098aa/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Nov 06 14:36:08 IST 2020 2 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip 3 | distributionBase=GRADLE_USER_HOME 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## Gradle start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/" >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="Gradle" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 84 | 85 | 86 | # Determine the Java command to use to start the JVM. 87 | if [ -n "$JAVA_HOME" ] ; then 88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 89 | # IBM's JDK on AIX uses strange locations for the executables 90 | JAVACMD="$JAVA_HOME/jre/sh/java" 91 | else 92 | JAVACMD="$JAVA_HOME/bin/java" 93 | fi 94 | if [ ! -x "$JAVACMD" ] ; then 95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 96 | 97 | Please set the JAVA_HOME variable in your environment to match the 98 | location of your Java installation." 99 | fi 100 | else 101 | JAVACMD="java" 102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 103 | 104 | Please set the JAVA_HOME variable in your environment to match the 105 | location of your Java installation." 106 | fi 107 | 108 | # Increase the maximum file descriptors if we can. 109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 110 | MAX_FD_LIMIT=`ulimit -H -n` 111 | if [ $? -eq 0 ] ; then 112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 113 | MAX_FD="$MAX_FD_LIMIT" 114 | fi 115 | ulimit -n $MAX_FD 116 | if [ $? -ne 0 ] ; then 117 | warn "Could not set maximum file descriptor limit: $MAX_FD" 118 | fi 119 | else 120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 121 | fi 122 | fi 123 | 124 | # For Darwin, add options to specify how the application appears in the dock 125 | if $darwin; then 126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 127 | fi 128 | 129 | # For Cygwin or MSYS, switch paths to Windows format before running java 130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then 131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 133 | 134 | JAVACMD=`cygpath --unix "$JAVACMD"` 135 | 136 | # We build the pattern for arguments to be converted via cygpath 137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 138 | SEP="" 139 | for dir in $ROOTDIRSRAW ; do 140 | ROOTDIRS="$ROOTDIRS$SEP$dir" 141 | SEP="|" 142 | done 143 | OURCYGPATTERN="(^($ROOTDIRS))" 144 | # Add a user-defined pattern to the cygpath arguments 145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 147 | fi 148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 149 | i=0 150 | for arg in "$@" ; do 151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 153 | 154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 156 | else 157 | eval `echo args$i`="\"$arg\"" 158 | fi 159 | i=`expr $i + 1` 160 | done 161 | case $i in 162 | 0) set -- ;; 163 | 1) set -- "$args0" ;; 164 | 2) set -- "$args0" "$args1" ;; 165 | 3) set -- "$args0" "$args1" "$args2" ;; 166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;; 167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 172 | esac 173 | fi 174 | 175 | # Escape application args 176 | save () { 177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 178 | echo " " 179 | } 180 | APP_ARGS=`save "$@"` 181 | 182 | # Collect all arguments for the java command, following the shell quoting and substitution rules 183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 184 | 185 | exec "$JAVACMD" "$@" 186 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto init 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto init 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :init 68 | @rem Get command-line arguments, handling Windows variants 69 | 70 | if not "%OS%" == "Windows_NT" goto win9xME_args 71 | 72 | :win9xME_args 73 | @rem Slurp the command line arguments. 74 | set CMD_LINE_ARGS= 75 | set _SKIP=2 76 | 77 | :win9xME_args_slurp 78 | if "x%~1" == "x" goto execute 79 | 80 | set CMD_LINE_ARGS=%* 81 | 82 | :execute 83 | @rem Setup the command line 84 | 85 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 86 | 87 | 88 | @rem Execute Gradle 89 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 90 | 91 | :end 92 | @rem End local scope for the variables with windows NT shell 93 | if "%ERRORLEVEL%"=="0" goto mainEnd 94 | 95 | :fail 96 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 97 | rem the _cmd.exe /c_ return code! 98 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 99 | exit /b 1 100 | 101 | :mainEnd 102 | if "%OS%"=="Windows_NT" endlocal 103 | 104 | :omega 105 | -------------------------------------------------------------------------------- /input_data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "key": "$JETPACK_COMPOSE_REPOS", 4 | "pattern": "Jetpack Compose Apps", 5 | "projects": [ 6 | { 7 | "github_url": "https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps" 8 | }, 9 | { 10 | "github_url": "https://github.com/prsahuh/DICE_ROLL_APP" 11 | }, 12 | { 13 | "github_url": "https://github.com/a914-gowtham/RickNMortyCompose" 14 | } 15 | ] 16 | }, 17 | { 18 | "key": "$MVVM_NORMAL_REPOS", 19 | "pattern": "MVVM - Normal", 20 | "projects": [ 21 | { 22 | "github_url": "https://github.com/Rarj/TypiCodeRio", 23 | "stack": "Coroutines, Koin, Data Binding, View Binding, Live Data, Retrofit2, GSON" 24 | }, 25 | { 26 | "github_url": "https://github.com/mithun17/SimpleBible", 27 | "stack": "Dagger Hilt, Coroutines + Flow, ViewModel, Retrofit, Room, Navigation" 28 | }, 29 | { 30 | "github_url": "https://github.com/ashucoder1/Portfolio-App", 31 | "stack": "Kotlin, Room, Basic Intents, Gallery Image Picker" 32 | }, 33 | { 34 | "github_url": "https://github.com/ImnIrdst/iiCnma", 35 | "stack": "Dagger Hilt, Testing, Coroutines + Flow, Retrofit, Room, LiveData, ViewModel, Paging, Navigation" 36 | }, 37 | { 38 | "github_url": "https://github.com/fabirt/roka-recipe-app", 39 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, LiveData, ViewModel, Paging, Navigation, DataStore" 40 | }, 41 | { 42 | "github_url": "https://github.com/Hamza417/Inure", 43 | "stack": "LiveData, ViewModel, WebKit, APK Parser, libsu" 44 | }, 45 | { 46 | "github_url": "https://github.com/ErickSumargo/Dads", 47 | "stack": "Hilt, Coroutines + Flow, UI Testing, Room, ViewModel, WorkManager, Apollo" 48 | }, 49 | { 50 | "github_url": "https://github.com/tema6120/ForgetMeNot", 51 | "stack": "Coroutines + Flow, SQLDelight, Kotlin Serialization, Klock, Brackeys-IDE EditorKit" 52 | }, 53 | { 54 | "github_url": "https://github.com/GerardBradshaw/MixUp", 55 | "stack": "Dagger, Coroutines, Testing, Navigation, ColorPicker, ViewModel" 56 | }, 57 | { 58 | "github_url": "https://github.com/androiddevnotesforks/Bitlue", 59 | "stack": "Dagger Hilt, Coroutines + Flow, MPAndroidChart, Retrofit, LiveData, ViewModel" 60 | }, 61 | { 62 | "github_url": "https://github.com/mukul500/AnimeXStream", 63 | "stack": "Retrofit, RxJava, Epoxy, ViewModel, LiveData, Navigation, Realm, ExoPlayer v2.0, Glide" 64 | }, 65 | { 66 | "github_url": "https://github.com/PatilShreyas/NotyKT", 67 | "stack": "Backend - Ktor, PostgreSQL; Android = Coroutines, Flow, Navigation Architecture, LiveData, ViewModel, Room DB, DataStore, Jetpack Security, WorkManager, Dagger Hilt DI, Jetpack Compose, Material UI, Retrofit, Moshi" 68 | }, 69 | { 70 | "github_url": "https://github.com/Sharkaboi/DrawingsApp", 71 | "stack": "Dagger Hilt, Coroutines, Room, Dhaval2404/ImagePicker, Subsampling Scale Image View, Navigation, LiveData, ViewModel" 72 | }, 73 | { 74 | "github_url": "https://github.com/b-lam/Resplash", 75 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Firestore, Firebase In-App Messaging, Paging, Navigation, Google Play Billing, Muzei, LiveData, ViewModel" 76 | }, 77 | { 78 | "github_url": "https://github.com/utsmannn/hiya-hiya-hiya", 79 | "stack": "Koin, Coroutines, Retrofit, Room, Firebase Messaging, Firebase Auth, WorkManager, Google Maps, Paging, JSoup, vanniktech/Emoji, afollestad/inline-activity-result, LiveData, ViewModel" 80 | }, 81 | { 82 | "github_url": "https://github.com/ashwini009/TvFlix", 83 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel" 84 | }, 85 | { 86 | "github_url": "https://github.com/sauravrao637/Kripto", 87 | "stack": "Hilt, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, State FLow, ViewModel" 88 | }, 89 | { 90 | "github_url": "https://github.com/fevziomurtekin/DeezerClone", 91 | "stack": "Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel,Navigation LiveData), Retrofit, Paging, Testing" 92 | }, 93 | { 94 | "github_url": "https://github.com/jnkforks/PokemonGo", 95 | "stack": "Dagger Hilt, Koin, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Paging, LiveData, ViewModel" 96 | }, 97 | { 98 | "github_url": "https://github.com/andyb129/AppDevToolbox", 99 | "stack": "Dagger, Coroutines, RxJava, Room, Venom, LiveData, ViewModel" 100 | }, 101 | { 102 | "github_url": "https://github.com/nahzur-h/awaker", 103 | "stack": "RxJava, Testing, Retrofit, Room, ExoPlayer, LiveData, ViewModel" 104 | }, 105 | { 106 | "github_url": "https://github.com/mrcsxsiq/DroidNotes", 107 | "stack": "ViewModel, LiveData, Coroutines, Room, Jetpack Compose" 108 | }, 109 | { 110 | "github_url": "https://github.com/theapache64/topcorn", 111 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel" 112 | }, 113 | { 114 | "github_url": "https://github.com/vmiklos/plees-tracker", 115 | "stack": "Room, LiveData, ViewModel" 116 | }, 117 | { 118 | "github_url": "https://github.com/Chesire/Nekome", 119 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel" 120 | }, 121 | { 122 | "github_url": "https://github.com/ardakazanci/Heyyoo", 123 | "stack": "Coroutines, Retrofit, Room, Algolia, LocGetter, EasyValidation, Dexter, Splashy, secure-preferences, Paging, Data Binding, Navigation, LiveData, ViewModel" 124 | }, 125 | { 126 | "github_url": "https://github.com/lulululbj/wanandroid", 127 | "stack": "Koin, Coroutines, Testing, Retrofit, Navigation, FlowLayout, LiveData, ViewModel" 128 | }, 129 | { 130 | "github_url": "https://github.com/SIKV/Photos", 131 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase-ML, Firebase-Analytics, Paging, Navigation, LiveData, ViewModel" 132 | }, 133 | { 134 | "github_url": "https://github.com/ValterKasper/space-app", 135 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel" 136 | }, 137 | { 138 | "github_url": "https://github.com/nominalista/expenses", 139 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, WorkManager, Navigation, LiveData, ViewModel" 140 | }, 141 | { 142 | "github_url": "https://github.com/lmj0011/jetpack-release-tracker", 143 | "stack": "Coroutines, Testing, Fuel, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel" 144 | }, 145 | { 146 | "github_url": "https://github.com/willowtreeapps/vocable-android", 147 | "stack": "Koin, Coroutines, Testing, Room, Data Binding, AR, LiveData, ViewModel" 148 | }, 149 | { 150 | "github_url": "https://github.com/Shashank02051997/GitExplorer-Android", 151 | "stack": "LiveData, ViewModel" 152 | }, 153 | { 154 | "github_url": "https://github.com/VIPyinzhiwei/Eyepetizer", 155 | "stack": "Coroutines, Testing, Retrofit, WorkManager, GSYVideoPlayer, Data Binding, PermissionX, EventBus, LiveData, ViewModel" 156 | }, 157 | { 158 | "github_url": "https://github.com/PatilShreyas/Foodium", 159 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel" 160 | }, 161 | { 162 | "github_url": "https://github.com/michaldrabik/Showly-2.0", 163 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Firebase Messaging, WorkManager, Navigation, Dynamicanimation, LiveData, ViewModel" 164 | }, 165 | { 166 | "github_url": "https://github.com/bernaferrari/ChangeDetection", 167 | "stack": "Dagger, Coroutines, RxJava, Retrofit, Room, Firestore, WorkManager, Paging, Data Binding, Navigation, JSoup, js-evaluator-for-android, LiveData, ViewModel" 168 | }, 169 | { 170 | "github_url": "https://github.com/YahiaAngelo/Noted-Android", 171 | "stack": "Koin dependency injection, Coroutines, Realm db, Material Components, Markdown, Navigation, LiveData, ViewModel" 172 | }, 173 | { 174 | "github_url": "https://github.com/igorescodro/alkaa", 175 | "stack": "Koin, Espresso, UiAutomator, Mockk, Coroutines, Navigation, Room, MotionLayout, KTX, Modularization, Dynamic Delivery, Dark Theme, klint, Detekt, codebeat, CodeFactor, Codacy, MPAndroidChart, Groupie, LiveData, ViewModel" 176 | }, 177 | { 178 | "github_url": "https://github.com/HariKulhari06/Covid-19-Tracker", 179 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, Firestore, WorkManager, Navigation, MPAndroidChart, LiveData, ViewModel" 180 | }, 181 | { 182 | "github_url": "https://github.com/zedlabs/WallPortal", 183 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, Paging, Navigation, LiveData, ViewModel" 184 | }, 185 | { 186 | "github_url": "https://github.com/ricknout/rugby-ranker", 187 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, insetter, LiveData, ViewModel" 188 | }, 189 | { 190 | "github_url": "https://github.com/androiddevnotesforks/WallpaperApp_mvvm", 191 | "stack": "Koin, Coroutines, Retrofit, Room, Lottie, Zoomy, Navigation, LiveData, ViewModel" 192 | }, 193 | { 194 | "github_url": "https://github.com/DheerajKotwani/GithubVisualizer", 195 | "stack": "Retrofit, Firebase Auth, Coroutines, LiveData, ViewModel" 196 | }, 197 | { 198 | "github_url": "https://github.com/PHELAT/Tedu", 199 | "stack": "Dagger, Room, Coroutines, Firebase Messaging, Navigation, LiveData, ViewModel" 200 | }, 201 | { 202 | "github_url": "https://github.com/abhinav0612/PasswordVault", 203 | "stack": "Dagger Hilt, Room, Navigation, LiveData, ViewModel" 204 | }, 205 | { 206 | "github_url": "https://github.com/TheCodeMonks/NYTimes-App", 207 | "stack": "Coroutines, Room, JSoup, Navigation, LiveData, ViewModel" 208 | }, 209 | { 210 | "github_url": "https://github.com/satyamurti/LetsChat", 211 | "stack": "Coroutines, Retrofit, Firestore, Firebase Auth, Firebase Messaging, Firebase Storage, Cloud Functions, Data Binding, Navigation, LiveData, ViewModel" 212 | }, 213 | { 214 | "github_url": "https://github.com/mayokunthefirst/Instant-Weather", 215 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, Algolia Search, LiveData, ViewModel" 216 | }, 217 | { 218 | "github_url": "https://github.com/qingmei2/MVVM-Architecture", 219 | "stack": "Dagger Hilt, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel" 220 | }, 221 | { 222 | "github_url": "https://github.com/nuhkoca/libbra", 223 | "stack": "Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel" 224 | }, 225 | { 226 | "github_url": "https://github.com/adityam49/Updoot", 227 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, ExoPlayer, WorkManager, Data Binding, Navigation, LiveData, ViewModel, Compose" 228 | }, 229 | { 230 | "github_url": "https://github.com/weylar/Movie", 231 | "stack": "Dagger, Coroutines, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, LiveData, ViewModel" 232 | }, 233 | { 234 | "github_url": "https://github.com/xiaoyanger0825/wanandroid", 235 | "stack": "Coroutines, Retrofit, Room, LiveData, ViewModel" 236 | }, 237 | { 238 | "github_url": "https://github.com/gs-ts/TrackMyPath", 239 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel" 240 | }, 241 | { 242 | "github_url": "https://github.com/KumarManas04/NotesSync", 243 | "stack": "Coroutines, Testing, Room, Google Drive, Dropbox, WorkManager, Navigation, LiveData, ViewModel" 244 | }, 245 | { 246 | "github_url": "https://github.com/CalvinNor/MovieMan/", 247 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel" 248 | }, 249 | { 250 | "github_url": "https://github.com/commonpepper/Photosen", 251 | "stack": "Retrofit, Room, Paging, LiveData, ViewModel" 252 | }, 253 | { 254 | "github_url": "https://github.com/OMIsie11/SpaceXFollower", 255 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, WorkManager, MPAndroidChart, Navigation, LiveData, ViewModel" 256 | }, 257 | { 258 | "github_url": "https://github.com/dievskiy/feedapp", 259 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Facebook Login, WorkManager, MPAndroidChart, Data Binding, Navigation, LiveData, ViewModel" 260 | }, 261 | { 262 | "github_url": "https://github.com/phicdy/MyCuration", 263 | "stack": "Koin, Coroutines, Testing, Retrofit, Jsoup, WorkManager, Data Binding, Navigation, LiveData, ViewModel" 264 | }, 265 | { 266 | "github_url": "https://github.com/droidconKE/droidconKE2020App", 267 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Google Auth, Data Binding, Navigation, LiveData, ViewModel" 268 | }, 269 | { 270 | "github_url": "https://github.com/fossasia/open-event-attendee-android", 271 | "stack": "Koin, RxJava, Testing, Retrofit, Room, Stripe, PayPal, Mapbox, Paging, Data Binding, Navigation, LiveData, ViewModel" 272 | }, 273 | { 274 | "github_url": "https://github.com/dangquanuet/The-Movie-DB-Kotlin", 275 | "stack": "Koin, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Data Binding, Easy Permissions, Navigation, LiveData, ViewModel" 276 | }, 277 | { 278 | "github_url": "https://github.com/CharlieChristensen/Cryptotracker", 279 | "stack": "Dagger, Coroutines, Testing, socketIO, Retrofit, Room, MPAndroidChart, Navigation, LiveData, ViewModel" 280 | }, 281 | { 282 | "github_url": "https://github.com/haroldadmin/MoonShot", 283 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel" 284 | }, 285 | { 286 | "github_url": "https://github.com/ganainy/Our_chat", 287 | "stack": "Coroutines, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, Facebook Login, WorkManager, Dexter, Data Binding, Navigation, LiveData, ViewModel" 288 | }, 289 | { 290 | "github_url": "https://github.com/flexbooru/flexbooru", 291 | "stack": "Kodein, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Tikxml, LiveData, ViewModel" 292 | }, 293 | { 294 | "github_url": "https://github.com/flexbooru/flexbooru-ap", 295 | "stack": "Kodein, Coroutines, Retrofit, Room, WorkManager, Navigation, Markwon, LiveData, ViewModel" 296 | }, 297 | { 298 | "github_url": "https://github.com/gs-ts/BitfinexClient", 299 | "stack": "Koin, RxJava, Testing, Scarlet, Room, Data Binding, LiveData, ViewModel" 300 | }, 301 | { 302 | "github_url": "https://github.com/SoftwareEngineeringDaily/software-engineering-daily-android", 303 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Android-Permissions, LiveData, ViewModel" 304 | }, 305 | { 306 | "github_url": "https://github.com/GreyLabsDev/PexWalls", 307 | "stack": "Koin, Coroutines, RxJava, Retrofit, Room, Navigation, Markwon, LiveData, ViewModel" 308 | }, 309 | { 310 | "github_url": "https://github.com/iammert/AppLocker", 311 | "stack": "Dagger, RxJava, Room, WorkManager, Data Binding, RxPermissions, LiveData, ViewModel" 312 | }, 313 | { 314 | "github_url": "https://github.com/xiprox/Upgur", 315 | "stack": "Dagger, Retrofit, Room, WorkManager, Navigation, android-upload-service, LiveData, ViewModel" 316 | }, 317 | { 318 | "github_url": "https://github.com/AbduallahAtta/Social-Note", 319 | "stack": "Koin, RxJava, Room, Firestore, Firebase Auth, Firebase Storage, Firebase Messaging, WorkManager, Data Binding, Paging, LiveData, ViewModel" 320 | }, 321 | { 322 | "github_url": "https://github.com/cuongpm/youtube-dl-android", 323 | "stack": "Dagger, RxJava, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel" 324 | }, 325 | { 326 | "github_url": "https://github.com/PhilippeBoisney/ArchApp", 327 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Navigation, LiveData, ViewModel" 328 | }, 329 | { 330 | "github_url": "https://github.com/rumaan/file.io-Android-Client", 331 | "stack": "Testing, Fuel, Room, WorkManager, Navigation, PermissionsDispatcher, LiveData, ViewModel" 332 | }, 333 | { 334 | "github_url": "https://github.com/skydoves/Pokedex", 335 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel" 336 | }, 337 | { 338 | "github_url": "https://github.com/Wiqaytna-app/wiqaytna_android", 339 | "stack": "RxJava, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel" 340 | }, 341 | { 342 | "github_url": "https://github.com/ZahraHeydari/MusicPlayer", 343 | "stack": "Koin, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel" 344 | }, 345 | { 346 | "github_url": "https://github.com/google/iosched", 347 | "stack": "Dagger Hilt, Coroutines, Testing, Room, Firestore, Firebase Auth, Firebase Messaging, Firebase Functions, Navigation, ARCore, LiveData, ViewModel" 348 | }, 349 | { 350 | "github_url": "https://github.com/romannurik/muzei", 351 | "stack": "Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel" 352 | }, 353 | { 354 | "github_url": "https://github.com/mozilla-mobile/fenix", 355 | "stack": "Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel" 356 | }, 357 | { 358 | "github_url": "https://github.com/rumboalla/apkupdater", 359 | "stack": "Koin, JSoup, Navigation, LiveData, ViewModel" 360 | }, 361 | { 362 | "github_url": "https://github.com/VMadalin/android-modular-architecture", 363 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Navigation, Paging, Data Binding, LiveData, ViewModel" 364 | }, 365 | { 366 | "github_url": "https://github.com/moezbhatti/qksms", 367 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Realm, ExoPlayer, Conductor, Data Binding, ShortcutBadger, LiveData, ViewModel" 368 | }, 369 | { 370 | "github_url": "https://github.com/ApturiCOVID/apturicovid-android", 371 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Data Binding, ShortcutBadger, LiveData, ViewModel" 372 | }, 373 | { 374 | "github_url": "https://github.com/idisfkj/AwesomeGithub", 375 | "stack": "Coroutines, RxJava, Retrofit, Room, WorkManager, Paging, Navigation, Data Binding, ARouter, LiveData, ViewModel" 376 | }, 377 | { 378 | "github_url": "https://github.com/HabitRPG/habitica-android", 379 | "stack": "Dagger, Coroutines, RxJava, Retrofit, Realm, Firebase Messaging, Paging, Navigation, Facebook, FlowLayout, LiveData, ViewModel" 380 | }, 381 | { 382 | "github_url": "https://github.com/KhaledSherifSayed/PopularPeople", 383 | "stack": "Koin, Coroutines, Testing, Retrofit, Data Binding, Sandwich, LiveData, ViewModel" 384 | }, 385 | { 386 | "github_url": "https://github.com/alisonthemonster/Presently", 387 | "stack": "Dagger, Coroutines, RxJava, Testing, Room, Firebase Messaging, WorkManager, Dropbox, Calendar view, Paging, Biometric, LiveData, ViewModel" 388 | }, 389 | { 390 | "github_url": "https://github.com/fibelatti/raffler-kotlin", 391 | "stack": "Dagger, Coroutines, Testing, Room, LiveData, ViewModel" 392 | }, 393 | { 394 | "github_url": "https://github.com/sanmiAde/Yet_Another_Anime_List", 395 | "stack": "Dagger, RxJava, Testing using Fakes, MockWebserver, RxRetrofit, Room, Navigation Components, Lottie, LiveData, ViewModel" 396 | }, 397 | { 398 | "github_url": "https://github.com/OMIsie11/CovidNow", 399 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, MPAndroidChart, LiveData, ViewModel" 400 | }, 401 | { 402 | "github_url": "https://github.com/KevinGitonga/TukoNewsClient", 403 | "stack": "Coroutines, Retrofit, Room, LiveData, ViewModel" 404 | }, 405 | { 406 | "github_url": "https://github.com/KevinGitonga/NewsFeed", 407 | "stack": "Coroutines, Retrofit, Room, Pretty Time, LiveData, ViewModel" 408 | }, 409 | { 410 | "github_url": "https://github.com/auron567/Gallerit", 411 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel" 412 | }, 413 | { 414 | "github_url": "https://github.com/enginebai/MovieHunt", 415 | "stack": "Koin, RxJava, Room, Paging, Navigation, Epoxy, LiveData, ViewModel" 416 | }, 417 | { 418 | "github_url": "https://github.com/Shivamdhuria/flows_guide", 419 | "stack": "Dagger Hilt, Coroutines, Flows, Retrofit, Room, Material Design Components, Navigation, LiveData, ViewModel" 420 | }, 421 | { 422 | "github_url": "https://github.com/rizmaulana/kotlin-mvvm-covid19", 423 | "stack": "LiveData, Koin, RxJava, RxBinding, Offline first with simple caching, Spek2Framwework for Unit Testing, etc" 424 | }, 425 | { 426 | "github_url": "https://github.com/Tristankluivert/Knote", 427 | "stack": "ViewModel, LiveData, Koin, Room db, Coroutines etc" 428 | }, 429 | { 430 | "github_url": "https://github.com/Devansh-Maurya/PukaPuka", 431 | "stack": "LiveData, ViewModel, Navigation Components, CameraKit, Firebase ML Kit Text Recognition API, Glide, Volley, Lottie" 432 | }, 433 | { 434 | "github_url": "https://github.com/fionicholas/Football-App", 435 | "stack": "LiveData, ViewModel, Retrofit, Room, Koin, RxJava, etc" 436 | }, 437 | { 438 | "github_url": "https://github.com/ryanrvldo/MovieCatalogue", 439 | "stack": "ViewModel, LiveData, Coroutines, Firebase Cloud Messaging, Retrofit, Room, Glide, Dagger Hilt, and Google Material." 440 | }, 441 | { 442 | "github_url": "https://github.com/mutualmobile/Praxis", 443 | "stack": "Dagger, Retrofit, Coroutines, RXJava2, ViewModel, Data Binding" 444 | }, 445 | { 446 | "github_url": "https://github.com/MindorksOpenSource/MVVM-Architecture-Android-Beginners", 447 | "stack": "Dagger, Coroutines, RXJava2, ViewModel, Data Binding, LiveData." 448 | }, 449 | { 450 | "github_url": "https://github.com/skydoves/Pokedex-AR", 451 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, ARCore, Sceneform, ViewModel, Data Binding, LiveData." 452 | }, 453 | { 454 | "github_url": "https://github.com/mrcsxsiq/Kotlin-Pokedex", 455 | "stack": "LiveData, Navigation Jetpack, ViewModel, Room, Gradle Kotlin DSL, Databinding, Retrofit, Koin and Ktlint" 456 | }, 457 | { 458 | "github_url": "https://github.com/Ratheshan03/andriod-movie-collection-application", 459 | "stack": "Kotlin, Json, XML, SQLlite, OMBD-API, Room, Coroutines, CI-CD, ViewModel, Navigation" 460 | }, 461 | { 462 | "github_url": "https://github.com/Ratheshan03/android-arithmetic-game", 463 | "stack": "Kotlin, Json, XML, SQLlite, OMBD-API, Room, Coroutines, ViewModel" 464 | }, 465 | { 466 | "github_url": "https://github.com/LouisFn/SoMovie", 467 | "stack": "Compose, Kotlin, Coroutines, Gradle Kotlin DSL, Multi Module, View Model, Room, DataStore, Paging 3, Hilt, Retrofit, Coil, JUnit, Jacoco, Ktlint, Detekt, Github Actions" 468 | } 469 | ] 470 | }, 471 | { 472 | "key": "$MVVM_CLEAN_ARCH_REPOS", 473 | "pattern": "MVVM - Clean Architecture", 474 | "projects": [ 475 | { 476 | "github_url": "https://github.com/sanogueralorenzo/Android-Kotlin-Clean-Architecture", 477 | "stack": "Dagger Hilt, Testing, RxJava, Retrofit, AssistedInject, Epoxy, RxPaper, MvRx, ViewModel" 478 | }, 479 | { 480 | "github_url": "https://github.com/happysingh23828/Android-Clean-Architecture", 481 | "stack": "Dagger, Unit Testing for modules, Mockito, RxJava, Retrofit, Room, CI-CD, SOLID, Code Coverage, Jacoco, Detekt, ktlint, Stetho, LiveData, ViewModel" 482 | }, 483 | { 484 | "github_url": "https://github.com/igorwojda/android-showcase", 485 | "stack": "Kodein, Coroutines, Testing, Retrofit, KAndroid, Lottie, Detekt, Navigation, Dynamic Feature Modules, LiveData, ViewModel" 486 | }, 487 | { 488 | "github_url": "https://github.com/ferPrieto/Coroutines-Flows-Modularised", 489 | "stack": "Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel" 490 | }, 491 | { 492 | "github_url": "https://github.com/akoufa/CoolWeather", 493 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel" 494 | }, 495 | { 496 | "github_url": "https://github.com/odaridavid/Clean-MVVM-ArchComponents", 497 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Motion Layout, LiveData, ViewModel" 498 | }, 499 | { 500 | "github_url": "https://github.com/andremion/Theatre", 501 | "stack": "Dagger, RxJava, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel" 502 | }, 503 | { 504 | "github_url": "https://github.com/HamdiBoumaiza/CoronavirusWorldStatus", 505 | "stack": "Dagger, Coroutines, Retrofit, Room, LiveData, ViewModel , Stetho" 506 | }, 507 | { 508 | "github_url": "https://github.com/SmartToolFactory/PropertyFindAR", 509 | "stack": "RxJava3, Coroutines Flow, Retrofit, Room, Dagger Hilt, Dynamic Feature Modules, ConcatAdapter, LiveData, ViewModel, SavedStateHandle, WorkManager, Glide, Lottie, MpCharts, MockWebServer, MockK, FlowTestObserver, ktLint, detekt, Git Hooks, Git Flow" 510 | }, 511 | { 512 | "github_url": "https://github.com/sansets/android-clean-architecture", 513 | "stack": "Navigation Component, Dagger, Coroutines Flow, Room, Retrofit, LiveData, ViewModel, View Binding, Dynamic Feature Modules." 514 | }, 515 | { 516 | "github_url": "https://github.com/VladimirWrites/BLTaxi", 517 | "stack": "Koin, Retrofit, Room, Data Binding, LiveData, View Model, Work Manager, Material Components" 518 | }, 519 | { 520 | "github_url": "https://github.com/akhilesh0707/Rick-and-Morty", 521 | "stack": "Kotlin, Coroutines, Flow, Dagger-Hilt, Kotlin-DSL, LiveData, Lifecycle, ViewModel, Room, Navigation, Data Binding, Material-Components, Retrofit, OkHttp, Moshi, Timber, Glide" 522 | }, 523 | { 524 | "github_url": "https://github.com/bakharaalief/Slootnime-APP", 525 | "stack": "Kotlin, Coroutine, Dagger-Hilt, LiveData, Lifecycle, ViewModel, Apollo, Glide, Pagging, Lottie" 526 | } 527 | ] 528 | }, 529 | { 530 | "key": "$MVI_NORMAL_REPOS", 531 | "pattern": "MVI - Normal", 532 | "projects": [ 533 | { 534 | "github_url": "https://github.com/HadySalhab/NewsFeed-MVI-Dagger", 535 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel" 536 | }, 537 | { 538 | "github_url": "https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack", 539 | "stack": "Koin, Coroutines, RxJava, Retrofit, Room, Firestore, Firebase Auth, Firebase Storage, WorkManager, Navigation, Paging, LiveData, ViewModel" 540 | }, 541 | { 542 | "github_url": "https://github.com/R4md4c/GameDealz", 543 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, acra, fastAdapter, Paging, JSoup, dropbox/Store, LiveData, ViewModel" 544 | }, 545 | { 546 | "github_url": "https://github.com/mitchtabian/Open-API-Android-App", 547 | "stack": "Dagger, Coroutines, Retrofit, Room, Navigation, LiveData, ViewModel" 548 | } 549 | ] 550 | }, 551 | { 552 | "key": "$MVI_CLEAN_ARCH_REPOS", 553 | "pattern": "MVI - Clean Architecture", 554 | "projects": [ 555 | { 556 | "github_url": "https://github.com/lopspower/CleanRxArchitecture", 557 | "stack": "Dagger, RxJava, Retrofit, Room, Clean Architecture, LiveData, ViewModel" 558 | }, 559 | { 560 | "github_url": "https://github.com/mitchtabian/Clean-Notes", 561 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Firestore, Firebase Auth, Navigation, Markdown Processor, LiveData, ViewModel" 562 | }, 563 | { 564 | "github_url": "https://github.com/Ezike/Baking-App-Kotlin", 565 | "stack": "Dagger hilt, Coroutines & StateFlow, Unit Testing, Retrofit, DFM Navigation, FlowBinding, Exoplayer" 566 | }, 567 | { 568 | "github_url": "https://github.com/Ezike/MVI_UIComponents", 569 | "stack": "Jetpack, Dagger hilt, Coroutines & StateFlow, Room, Retrofit, FlowBinding" 570 | } 571 | ] 572 | }, 573 | { 574 | "key": "$MVP_REPOS", 575 | "pattern": "MVP", 576 | "projects": [ 577 | { 578 | "github_url": "https://github.com/inorichi/tachiyomi", 579 | "stack": "Inorichi injekt, Coroutines, RxJava, Testing, Retrofit, DiskLruCache, Jsoup, WorkManager, Duktape Android, Conductor" 580 | }, 581 | { 582 | "github_url": "https://github.com/ImangazalievM/UTair-MVP-Sample", 583 | "stack": "Clean Architecture, Coroutines, RxJava 2, Coroutines, Toothpick, Moxy, Unit-tests (Spek, Mockk), UI-tests (Kaspresso)" 584 | } 585 | ] 586 | }, 587 | { 588 | "key": "$OTHER_REPOS", 589 | "pattern": "Other", 590 | "projects": [ 591 | { 592 | "github_url": "https://github.com/shadowsocks/shadowsocks-android", 593 | "stack": "Testing, Room, Firebase Ads, WorkManager" 594 | }, 595 | { 596 | "github_url": "https://github.com/DimaBrody/Screenaway", 597 | "stack": "Room, Play Install Referrer Library" 598 | }, 599 | { 600 | "github_url": "https://github.com/BijoySingh/Scarlet-Notes", 601 | "stack": "Dagger, Coroutines, Room, Firebase Auth, Firebase Database, Paging, Navigation, Evernote android-job, Facebook Litho, Facebook SoLoader, Biometric" 602 | }, 603 | { 604 | "github_url": "https://github.com/aasif1297/kotlinbaseproject", 605 | "stack": "Foursquare APIs, Koin, Coroutines, Moshi, Room, Retrofit, Viewbinding, Google Play Services" 606 | }, 607 | { 608 | "github_url": "https://github.com/Husseinfo/countin", 609 | "stack": "Room, Coroutines, Compose, Material3" 610 | } 611 | ] 612 | } 613 | ] -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'awesome-android-kotlin-apps' 2 | 3 | -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/App.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka 2 | 3 | import com.github.aaka.core.ReadMeGenerator 4 | import com.github.aaka.data.local.InputProjectCategory 5 | import com.github.aaka.data.local.Project 6 | import com.github.aaka.data.repo.GitHubRepo 7 | import com.github.aaka.data.repo.InputDataRepo 8 | import com.github.aaka.data.repo.ReadMeRepo 9 | import com.github.aaka.di.DaggerAppComponent 10 | import com.github.aaka.utils.DateTimeUtils 11 | import kotlinx.coroutines.runBlocking 12 | import retrofit2.HttpException 13 | import java.net.HttpURLConnection 14 | import javax.inject.Inject 15 | import kotlin.system.exitProcess 16 | 17 | fun main(args: Array) = runBlocking { 18 | App().run() 19 | } 20 | 21 | class App { 22 | 23 | @Inject 24 | lateinit var githubRepo: GitHubRepo 25 | 26 | @Inject 27 | lateinit var inputDataRepo: InputDataRepo 28 | 29 | @Inject 30 | lateinit var readMeRepo: ReadMeRepo 31 | 32 | suspend fun run() { 33 | 34 | // Init DI first 35 | DaggerAppComponent 36 | .builder() 37 | .build() 38 | .inject(this) 39 | 40 | 41 | val inputProjectCategories = inputDataRepo.getInputProjectCategories() 42 | val projectMap = getProjectsMap(inputProjectCategories) 43 | 44 | // Now let's go build the README.md 45 | val readMeModel = readMeRepo.getReadMeModel() 46 | val updatedReadMe = ReadMeGenerator.generateReadMe(readMeModel, inputProjectCategories, projectMap) 47 | readMeRepo.saveReadMe(updatedReadMe) 48 | println("Done!") 49 | exitProcess(0) 50 | } 51 | 52 | 53 | /** 54 | * To convert all projects into one single map with all details collected from GitHub API 55 | */ 56 | private suspend fun getProjectsMap(inputProjectCategories: List): Map { 57 | val projectsMap = mutableMapOf() 58 | var shouldUpdateInputData = false 59 | for (projectCategory in inputProjectCategories) { 60 | for (inputProject in projectCategory.inputProjects) { 61 | 62 | val url = inputProject.githubUrl 63 | val s1 = url.split("/") 64 | 65 | val username = s1[3] 66 | val repoName = s1[4] 67 | 68 | try { 69 | val githubRepo = githubRepo.getRepo(username, repoName) 70 | val project = Project( 71 | githubRepo.name!!, 72 | githubRepo.htmlUrl!!, 73 | githubRepo.description, 74 | githubRepo.owner!!.login!!, 75 | githubRepo.owner.htmlUrl!!, 76 | Project.Reputation( 77 | githubRepo.forks!!, 78 | githubRepo.stargazersCount!!, 79 | githubRepo.subscribersCount!! 80 | ), 81 | DateTimeUtils.fromUtcToUtcMillis(githubRepo.pushedAt), 82 | inputProject.stack 83 | ) 84 | projectsMap[inputProject.githubUrl] = project 85 | println("Finished : ${inputProject.githubUrl} -> $project") 86 | } catch (e: HttpException) { 87 | println("Failed: ${e.code()} ${inputProject.githubUrl}") 88 | if (e.code() == HttpURLConnection.HTTP_NOT_FOUND) { 89 | println("Removing $inputProject from input_data.json") 90 | shouldUpdateInputData = true 91 | // repo doesn't exist. so let's remove it from the `input_data.json` file 92 | projectCategory.inputProjects = projectCategory.inputProjects.toMutableList().apply { 93 | remove(inputProject) 94 | } 95 | } 96 | } 97 | } 98 | } 99 | 100 | if (shouldUpdateInputData) { 101 | inputDataRepo.updateInputProjectCategories(inputProjectCategories) 102 | } 103 | 104 | return projectsMap 105 | } 106 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/core/ReadMeGenerator.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.core 2 | 3 | import com.github.aaka.data.local.InputProjectCategory 4 | import com.github.aaka.data.local.Project 5 | import com.github.aaka.data.repo.ReadMeRepo 6 | import com.github.aaka.utils.DateTimeUtils 7 | import java.lang.StringBuilder 8 | import java.util.* 9 | 10 | object ReadMeGenerator { 11 | 12 | private val MODIFY_NOTICE = """ 13 | 14 | 15 | 20 | 21 | 22 | """.trimIndent() 23 | 24 | private const val KEY_LAST_UPDATED = "\$LAST_UPDATED" 25 | private const val KEY_APPS_COUNT = "\$APPS_COUNT" 26 | 27 | fun generateReadMe( 28 | _readMeModel: String, 29 | inputProjectCategories: List, 30 | projectMap: Map 31 | ): String { 32 | 33 | var readMeModel = _readMeModel 34 | 35 | 36 | for (category in inputProjectCategories) { 37 | val tableBuilder = StringBuilder( 38 | """ 39 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 | 40 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| 41 | """.trimIndent() 42 | ) 43 | 44 | // Sorting project by last commit 45 | category.inputProjects = 46 | category.inputProjects.sortedByDescending { projectMap[it.githubUrl]?.lastCommitInUtcMillis } 47 | 48 | for (inputProject in category.inputProjects) { 49 | 50 | val project = 51 | projectMap[inputProject.githubUrl] ?: error("Couldn't find ${inputProject.githubUrl} in projectMap") 52 | 53 | var description = "" 54 | if (project.description != null) { 55 | description = project.description 56 | } 57 | 58 | if (project.stack != null) { 59 | description += "

Tech Stack : ${project.stack} " 60 | } 61 | 62 | description += "

Last commit: ${DateTimeUtils.getRelativeTimeSpan(project.lastCommitInUtcMillis)}" 63 | 64 | tableBuilder.append( 65 | """ 66 | 67 | | [${ 68 | project.repo.replace( 69 | "_", 70 | "-" 71 | ) 72 | }](${project.repoUrl}) | [${project.owner}](${project.ownerUrl}) | $description | 🌟 ${project.reputation.stars}
🍴 ${project.reputation.fork}
👁️ ${project.reputation.watchers} | 73 | """.trimIndent() 74 | ) 75 | } 76 | 77 | readMeModel = readMeModel.replace(category.key, tableBuilder.toString()) 78 | } 79 | 80 | 81 | readMeModel = MODIFY_NOTICE + readMeModel 82 | // Add last updated date 83 | .replace(KEY_LAST_UPDATED, Date().toString()) 84 | // Update total apps count 85 | .replace(KEY_APPS_COUNT, projectMap.size.toString()) + MODIFY_NOTICE 86 | 87 | 88 | 89 | return readMeModel 90 | } 91 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/data/local/InputProjectCategory.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.data.local 2 | 3 | import com.squareup.moshi.JsonClass 4 | 5 | import com.squareup.moshi.Json 6 | 7 | 8 | @JsonClass(generateAdapter = true) 9 | data class InputProjectCategory( 10 | @Json(name = "key") 11 | val key: String, // $OTHER_REPOS 12 | @Json(name = "pattern") 13 | val pattern: String, // Other 14 | @Json(name = "projects") 15 | var inputProjects: List 16 | ) { 17 | @JsonClass(generateAdapter = true) 18 | data class InputProject( 19 | @Json(name = "github_url") 20 | val githubUrl: String, // https://github.com/shadowsocks/shadowsocks-android 21 | @Json(name = "stack") 22 | val stack: String? // Testing, Room, Firebase Ads, WorkManager 23 | ) 24 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/data/local/Project.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.data.local 2 | 3 | import com.squareup.moshi.JsonClass 4 | import com.squareup.moshi.Json 5 | 6 | @JsonClass(generateAdapter = true) 7 | data class Project( 8 | @Json(name = "repo") 9 | val repo: String, // NotyKT 10 | @Json(name = "repo_url") 11 | val repoUrl: String, // https://github.com/PatilShreyas/NotyKT 12 | @Json(name = "description") 13 | val description: String?, // NotyKT is a complete Kotlin-stack (Backend + Android) application built to demonstrate the use of Modern development tools with best practices implementation. 14 | @Json(name = "owner") 15 | val owner: String, // PatilShreyas 16 | @Json(name = "owner_url") 17 | val ownerUrl: String, // https://github.com/PatilShreyas 18 | @Json(name = "reputation") 19 | val reputation: Reputation, 20 | @Json(name = "lastCommitInUtcMillis") 21 | val lastCommitInUtcMillis: Long?, 22 | @Json(name = "stack") 23 | val stack: String? // This is stack information 24 | ) { 25 | @JsonClass(generateAdapter = true) 26 | data class Reputation( 27 | @Json(name = "fork") 28 | val fork: Int, // 2 29 | @Json(name = "stars") 30 | val stars: Int, // 12 31 | @Json(name = "watchers") 32 | val watchers: Int // 2 33 | ) 34 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/data/remote/GetRepoResponse.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.data.remote 2 | import com.squareup.moshi.JsonClass 3 | 4 | import com.squareup.moshi.Json 5 | 6 | 7 | @JsonClass(generateAdapter = true) 8 | data class GetRepoResponse( 9 | @Json(name = "archive_url") 10 | val archiveUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/{archive_format}{/ref} 11 | @Json(name = "archived") 12 | val archived: Boolean?, // false 13 | @Json(name = "assignees_url") 14 | val assigneesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/assignees{/user} 15 | @Json(name = "blobs_url") 16 | val blobsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/blobs{/sha} 17 | @Json(name = "branches_url") 18 | val branchesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/branches{/branch} 19 | @Json(name = "clone_url") 20 | val cloneUrl: String?, // https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps.git 21 | @Json(name = "collaborators_url") 22 | val collaboratorsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/collaborators{/collaborator} 23 | @Json(name = "comments_url") 24 | val commentsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/comments{/number} 25 | @Json(name = "commits_url") 26 | val commitsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/commits{/sha} 27 | @Json(name = "compare_url") 28 | val compareUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/compare/{base}...{head} 29 | @Json(name = "contents_url") 30 | val contentsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/contents/{+path} 31 | @Json(name = "contributors_url") 32 | val contributorsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/contributors 33 | @Json(name = "created_at") 34 | val createdAt: String?, // 2020-08-28T19:50:05Z 35 | @Json(name = "default_branch") 36 | val defaultBranch: String?, // master 37 | @Json(name = "deployments_url") 38 | val deploymentsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/deployments 39 | @Json(name = "description") 40 | val description: String?, // [Hacktoberfest] 👓 A curated list of awesome Jetpack Compose android apps by open-source contributors. 41 | @Json(name = "disabled") 42 | val disabled: Boolean?, // false 43 | @Json(name = "downloads_url") 44 | val downloadsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/downloads 45 | @Json(name = "events_url") 46 | val eventsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/events 47 | @Json(name = "fork") 48 | val fork: Boolean?, // false 49 | @Json(name = "forks") 50 | val forks: Int?, // 9 51 | @Json(name = "forks_count") 52 | val forksCount: Int?, // 9 53 | @Json(name = "forks_url") 54 | val forksUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/forks 55 | @Json(name = "full_name") 56 | val fullName: String?, // androiddevnotes/awesome-jetpack-compose-android-apps 57 | @Json(name = "git_commits_url") 58 | val gitCommitsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/commits{/sha} 59 | @Json(name = "git_refs_url") 60 | val gitRefsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/refs{/sha} 61 | @Json(name = "git_tags_url") 62 | val gitTagsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/tags{/sha} 63 | @Json(name = "git_url") 64 | val gitUrl: String?, // git://github.com/androiddevnotes/awesome-jetpack-compose-android-apps.git 65 | @Json(name = "has_downloads") 66 | val hasDownloads: Boolean?, // true 67 | @Json(name = "has_issues") 68 | val hasIssues: Boolean?, // true 69 | @Json(name = "has_pages") 70 | val hasPages: Boolean?, // false 71 | @Json(name = "has_projects") 72 | val hasProjects: Boolean?, // true 73 | @Json(name = "has_wiki") 74 | val hasWiki: Boolean?, // true 75 | @Json(name = "homepage") 76 | val homepage: String?, 77 | @Json(name = "hooks_url") 78 | val hooksUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/hooks 79 | @Json(name = "html_url") 80 | val htmlUrl: String?, // https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps 81 | @Json(name = "id") 82 | val id: Int?, // 291133502 83 | @Json(name = "issue_comment_url") 84 | val issueCommentUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/issues/comments{/number} 85 | @Json(name = "issue_events_url") 86 | val issueEventsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/issues/events{/number} 87 | @Json(name = "issues_url") 88 | val issuesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/issues{/number} 89 | @Json(name = "keys_url") 90 | val keysUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/keys{/key_id} 91 | @Json(name = "labels_url") 92 | val labelsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/labels{/name} 93 | @Json(name = "language") 94 | val language: String?, // Kotlin 95 | @Json(name = "languages_url") 96 | val languagesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/languages 97 | @Json(name = "license") 98 | val license: Any?, // null 99 | @Json(name = "merges_url") 100 | val mergesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/merges 101 | @Json(name = "milestones_url") 102 | val milestonesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/milestones{/number} 103 | @Json(name = "mirror_url") 104 | val mirrorUrl: Any?, // null 105 | @Json(name = "name") 106 | val name: String?, // awesome-jetpack-compose-android-apps 107 | @Json(name = "network_count") 108 | val networkCount: Int?, // 9 109 | @Json(name = "node_id") 110 | val nodeId: String?, // MDEwOlJlcG9zaXRvcnkyOTExMzM1MDI= 111 | @Json(name = "notifications_url") 112 | val notificationsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/notifications{?since,all,participating} 113 | @Json(name = "open_issues") 114 | val openIssues: Int?, // 1 115 | @Json(name = "open_issues_count") 116 | val openIssuesCount: Int?, // 1 117 | @Json(name = "owner") 118 | val owner: Owner?, 119 | @Json(name = "private") 120 | val `private`: Boolean?, // false 121 | @Json(name = "pulls_url") 122 | val pullsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/pulls{/number} 123 | @Json(name = "pushed_at") 124 | val pushedAt: String?, // 2020-10-16T19:33:59Z 125 | @Json(name = "releases_url") 126 | val releasesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/releases{/id} 127 | @Json(name = "size") 128 | val size: Int?, // 408 129 | @Json(name = "ssh_url") 130 | val sshUrl: String?, // git@github.com:androiddevnotes/awesome-jetpack-compose-android-apps.git 131 | @Json(name = "stargazers_count") 132 | val stargazersCount: Int?, // 83 133 | @Json(name = "stargazers_url") 134 | val stargazersUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/stargazers 135 | @Json(name = "statuses_url") 136 | val statusesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/statuses/{sha} 137 | @Json(name = "subscribers_count") 138 | val subscribersCount: Int?, // 1 139 | @Json(name = "subscribers_url") 140 | val subscribersUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/subscribers 141 | @Json(name = "subscription_url") 142 | val subscriptionUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/subscription 143 | @Json(name = "svn_url") 144 | val svnUrl: String?, // https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps 145 | @Json(name = "tags_url") 146 | val tagsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/tags 147 | @Json(name = "teams_url") 148 | val teamsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/teams 149 | @Json(name = "temp_clone_token") 150 | val tempCloneToken: Any?, // null 151 | @Json(name = "trees_url") 152 | val treesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/trees{/sha} 153 | @Json(name = "updated_at") 154 | val updatedAt: String?, // 2020-11-06T09:30:05Z 155 | @Json(name = "url") 156 | val url: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps 157 | @Json(name = "watchers") 158 | val watchers: Int?, // 83 159 | @Json(name = "watchers_count") 160 | val watchersCount: Int? // 83 161 | ) { 162 | @JsonClass(generateAdapter = true) 163 | data class Owner( 164 | @Json(name = "avatar_url") 165 | val avatarUrl: String?, // https://avatars2.githubusercontent.com/u/66256957?v=4 166 | @Json(name = "events_url") 167 | val eventsUrl: String?, // https://api.github.com/users/androiddevnotes/events{/privacy} 168 | @Json(name = "followers_url") 169 | val followersUrl: String?, // https://api.github.com/users/androiddevnotes/followers 170 | @Json(name = "following_url") 171 | val followingUrl: String?, // https://api.github.com/users/androiddevnotes/following{/other_user} 172 | @Json(name = "gists_url") 173 | val gistsUrl: String?, // https://api.github.com/users/androiddevnotes/gists{/gist_id} 174 | @Json(name = "gravatar_id") 175 | val gravatarId: String?, 176 | @Json(name = "html_url") 177 | val htmlUrl: String?, // https://github.com/androiddevnotes 178 | @Json(name = "id") 179 | val id: Int?, // 66256957 180 | @Json(name = "login") 181 | val login: String?, // androiddevnotes 182 | @Json(name = "node_id") 183 | val nodeId: String?, // MDQ6VXNlcjY2MjU2OTU3 184 | @Json(name = "organizations_url") 185 | val organizationsUrl: String?, // https://api.github.com/users/androiddevnotes/orgs 186 | @Json(name = "received_events_url") 187 | val receivedEventsUrl: String?, // https://api.github.com/users/androiddevnotes/received_events 188 | @Json(name = "repos_url") 189 | val reposUrl: String?, // https://api.github.com/users/androiddevnotes/repos 190 | @Json(name = "site_admin") 191 | val siteAdmin: Boolean?, // false 192 | @Json(name = "starred_url") 193 | val starredUrl: String?, // https://api.github.com/users/androiddevnotes/starred{/owner}{/repo} 194 | @Json(name = "subscriptions_url") 195 | val subscriptionsUrl: String?, // https://api.github.com/users/androiddevnotes/subscriptions 196 | @Json(name = "type") 197 | val type: String?, // User 198 | @Json(name = "url") 199 | val url: String? // https://api.github.com/users/androiddevnotes 200 | ) 201 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/data/remote/GitHubApi.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.data.remote 2 | 3 | import retrofit2.http.GET 4 | import retrofit2.http.Header 5 | import retrofit2.http.Path 6 | 7 | interface GitHubApi { 8 | 9 | @GET("repos/{username}/{repo}") 10 | suspend fun getRepo( 11 | @Header("Authorization") authToken: String, 12 | @Path("username") username: String, 13 | @Path("repo") repo: String, 14 | @Header("Accept") accept: String = "application/vnd.github.v3+json" 15 | ): GetRepoResponse 16 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/data/repo/GitHubRepo.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.data.repo 2 | 3 | import com.github.aaka.data.remote.GitHubApi 4 | import com.github.aaka.data.remote.GetRepoResponse 5 | import javax.inject.Inject 6 | 7 | class GitHubRepo @Inject constructor( 8 | val gitHubApi: GitHubApi 9 | ) { 10 | 11 | suspend fun getRepo(username: String, repoName: String): GetRepoResponse { 12 | val githubToken = System.getenv("GITHUB_ACCESS_TOKEN") 13 | return gitHubApi.getRepo( 14 | authToken = "token $githubToken", 15 | username = username, 16 | repo = repoName 17 | ) 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/data/repo/InputDataRepo.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.data.repo 2 | 3 | import com.github.aaka.data.local.InputProjectCategory 4 | import com.squareup.moshi.Moshi 5 | import com.squareup.moshi.Types 6 | import java.io.File 7 | import javax.inject.Inject 8 | 9 | class InputDataRepo @Inject constructor( 10 | val moshi: Moshi 11 | ) { 12 | 13 | private val inputDataFile = File("input_data.json") 14 | private val inputDataAdapter = moshi.adapter>( 15 | Types.newParameterizedType(List::class.java, InputProjectCategory::class.java) 16 | ).indent(" ") 17 | 18 | /** 19 | * Get input projects 20 | */ 21 | fun getInputProjectCategories(): List { 22 | // Parsing data 23 | 24 | val dataJson = inputDataFile.readText() 25 | return inputDataAdapter.fromJson(dataJson)!! 26 | /*.map { 27 | it.copy( 28 | inputProjects = if (it.inputProjects.size > 5) { 29 | it.inputProjects.subList(0, 2) 30 | } else { 31 | it.inputProjects.subList(0, 1) 32 | } 33 | ) 34 | }*/ 35 | } 36 | 37 | fun updateInputProjectCategories(inputData : List){ 38 | val dataJson = inputDataAdapter.toJson(inputData) 39 | inputDataFile.writeText(dataJson) 40 | } 41 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/data/repo/ReadMeRepo.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.data.repo 2 | 3 | import java.io.File 4 | import javax.inject.Inject 5 | 6 | class ReadMeRepo @Inject constructor() { 7 | fun getReadMeModel(): String { 8 | return File("README.model.md").readText() 9 | } 10 | 11 | fun saveReadMe(readMe: String) { 12 | File("README.md").writeText(readMe) 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/di/AppComponent.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.di 2 | 3 | import com.github.aaka.App 4 | import com.github.aaka.di.modules.MoshiModule 5 | import com.github.aaka.di.modules.NetworkModule 6 | import dagger.Component 7 | import javax.inject.Singleton 8 | 9 | @Component( 10 | modules = [ 11 | NetworkModule::class, 12 | MoshiModule::class 13 | ] 14 | ) 15 | @Singleton 16 | interface AppComponent { 17 | fun inject(app: App) 18 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/di/modules/MoshiModule.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.di.modules 2 | 3 | import com.squareup.moshi.Moshi 4 | import dagger.Module 5 | import dagger.Provides 6 | 7 | @Module 8 | class MoshiModule { 9 | 10 | @Provides 11 | fun provideMoshi(): Moshi { 12 | return Moshi.Builder().build() 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/di/modules/NetworkModule.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.di.modules 2 | 3 | import com.github.aaka.data.remote.GitHubApi 4 | import dagger.Module 5 | import dagger.Provides 6 | import okhttp3.OkHttpClient 7 | import okhttp3.logging.HttpLoggingInterceptor 8 | import retrofit2.Retrofit 9 | import retrofit2.converter.moshi.MoshiConverterFactory 10 | import javax.inject.Singleton 11 | 12 | @Module 13 | class NetworkModule { 14 | 15 | @Singleton 16 | @Provides 17 | fun provideLogger(): HttpLoggingInterceptor { 18 | return HttpLoggingInterceptor() 19 | .setLevel(HttpLoggingInterceptor.Level.NONE) 20 | } 21 | 22 | @Singleton 23 | @Provides 24 | fun provideOkHttpClient(httpLoggingInterceptor: HttpLoggingInterceptor): OkHttpClient { 25 | return OkHttpClient.Builder() 26 | .addInterceptor(httpLoggingInterceptor) 27 | .build() 28 | } 29 | 30 | @Singleton 31 | @Provides 32 | fun provideGithubApi(okHttpClient: OkHttpClient): GitHubApi { 33 | return Retrofit.Builder() 34 | .client(okHttpClient) 35 | .baseUrl("https://api.github.com/") 36 | .addConverterFactory(MoshiConverterFactory.create()) 37 | .build() 38 | .create(GitHubApi::class.java) 39 | } 40 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/tasks/convert/MarkdownToJsonConvertor.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.tasks.convert 2 | 3 | import java.lang.StringBuilder 4 | 5 | val input = """ 6 | 7 | - https://github.com/shadowsocks/shadowsocks-android 8 | 9 | - A shadowsocks client for Android 10 | 11 | - Tech Stack = Testing, Room, Firebase Ads, WorkManager 12 | 13 | 14 | - https://github.com/BijoySingh/Scarlet-Notes 15 | 16 | - Simple yet powerful rich note taking android application, with a lot of flexibilty of usage 17 | 18 | 19 | - Tech Stack = Dagger, Coroutines, Room, Firebase Auth, Firebase Database, Paging, Navigation, Evernote android-job, Facebook Litho, Facebook SoLoader, Biometric 20 | 21 | 22 | 23 | """.trimIndent() 24 | 25 | private val urlRegEx = "(?https:\\/\\/github\\.com\\/.+?\\/.+)".toRegex() 26 | private val techStackRegEx = "Tech Stack = (?.+)".toRegex() 27 | 28 | fun main(args: Array) { 29 | 30 | // Parsing URL 31 | val urlResults = urlRegEx.findAll(input) 32 | val urls = mutableListOf() 33 | for (url in urlResults) { 34 | urls.add(url.value) 35 | } 36 | 37 | // Parsing Stack 38 | val stackResults = techStackRegEx.findAll(input) 39 | val stacks = mutableListOf() 40 | for (stack in stackResults) { 41 | stacks.add(stack.value) 42 | } 43 | 44 | // Checking data integrity 45 | require(stacks.size == urls.size) { "Failed" } 46 | 47 | // Creating JSON 48 | val sb = StringBuilder() 49 | for ((index, url) in urls.withIndex()) { 50 | val stack = stacks[index] 51 | val project = """ 52 | { 53 | "github_url": "$url", 54 | "stack": "${stack.split("=")[1].trim()}" 55 | }, 56 | """.trimIndent() 57 | sb.append(project) 58 | } 59 | 60 | // Printing JSON 61 | println(sb) 62 | 63 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/github/aaka/utils/DateTimeUtils.kt: -------------------------------------------------------------------------------- 1 | package com.github.aaka.utils 2 | 3 | import org.ocpsoft.prettytime.PrettyTime 4 | import java.text.SimpleDateFormat 5 | import java.util.* 6 | 7 | object DateTimeUtils { 8 | 9 | /** 10 | * To convert UTC time string to UTC millis 11 | */ 12 | fun fromUtcToUtcMillis(updatedAt: String?): Long? { 13 | if (updatedAt == null) { 14 | return null 15 | } 16 | 17 | return utcFormat.parse(updatedAt).time 18 | } 19 | 20 | fun getRelativeTimeSpan(lastCommitInUtcMillis: Long?): String { 21 | if (lastCommitInUtcMillis == null) { 22 | return "Unknown" 23 | } 24 | 25 | return PrettyTime().format(Date(lastCommitInUtcMillis)) 26 | } 27 | 28 | private val utcFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault()).apply { 29 | timeZone = TimeZone.getTimeZone("UTC") 30 | } 31 | } -------------------------------------------------------------------------------- /stale_outputs_checked: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotes/awesome-android-kotlin-apps/fc067f5dae4159d7d39f74f1b14d23087c5098aa/stale_outputs_checked -------------------------------------------------------------------------------- /test.file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotes/awesome-android-kotlin-apps/fc067f5dae4159d7d39f74f1b14d23087c5098aa/test.file --------------------------------------------------------------------------------