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 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
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 |
324 |
325 | ## :computer: Find us on
326 |
327 |
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 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
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 |
166 |
167 | ## :computer: Find us on
168 |
169 |
174 |
--------------------------------------------------------------------------------
/assets/android.svg:
--------------------------------------------------------------------------------
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
--------------------------------------------------------------------------------