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 Jul 22 06:02:42 UTC 2021___
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: 2 weeks ago | 🌟 327 🍴 32 👁️ 9 |
71 |
72 | ### MVVM
73 |
74 | #### Normal
75 |
76 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 |
77 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
78 | | [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: 43 minutes ago | 🌟 4276 🍴 946 👁️ 186 |
79 | | [Presently](https://github.com/alisonthemonster/Presently) | [alisonthemonster](https://github.com/alisonthemonster) | Android app for recording gratitude journal entries Tech Stack : Dagger, Coroutines, RxJava, Testing, Room, Firebase Messaging, WorkManager, Dropbox, Calendar view, Paging, Biometric, LiveData, ViewModel Last commit: 1 hour ago | 🌟 139 🍴 44 👁️ 8 |
80 | | [fenix](https://github.com/mozilla-mobile/fenix) | [mozilla-mobile](https://github.com/mozilla-mobile) | Firefox for Android Tech Stack : Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel Last commit: 3 hours ago | 🌟 5039 🍴 876 👁️ 140 |
81 | | [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: 7 hours ago | 🌟 343 🍴 44 👁️ 14 |
82 | | [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: 9 hours ago | 🌟 1785 🍴 560 👁️ 35 |
83 | | [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: 11 hours ago | 🌟 30 🍴 5 👁️ 11 |
84 | | [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: 12 hours ago | 🌟 104 🍴 19 👁️ 3 |
85 | | [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: 1 day ago | 🌟 207 🍴 62 👁️ 7 |
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: 1 day ago | 🌟 727 🍴 82 👁️ 18 |
87 | | [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: 1 day ago | 🌟 292 🍴 59 👁️ 15 |
88 | | [Inure](https://github.com/Hamza417/Inure) | [Hamza417](https://github.com/Hamza417) | An elegant and beautiful Android app manager for both rooted and non-rooted devices and a built-in terminal, device info and analytics panel. Tech Stack : LiveData, ViewModel, WebKit, APK Parser, libsu Last commit: 2 days ago | 🌟 74 🍴 8 👁️ 5 |
89 | | [Pokedex](https://github.com/skydoves/Pokedex) | [skydoves](https://github.com/skydoves) | 🗡️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture. Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel Last commit: 2 days ago | 🌟 4498 🍴 519 👁️ 207 |
90 | | [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: 2 days ago | 🌟 880 🍴 392 👁️ 61 |
91 | | [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: 2 days ago | 🌟 254 🍴 40 👁️ 8 |
92 | | [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 days ago | 🌟 16 🍴 3 👁️ 1 |
93 | | [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: 2 days ago | 🌟 53 🍴 14 👁️ 6 |
94 | | [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: 5 days ago | 🌟 64 🍴 13 👁️ 5 |
95 | | [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: 5 days ago | 🌟 123 🍴 12 👁️ 5 |
96 | | [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: 7 days ago | 🌟 427 🍴 42 👁️ 13 |
97 | | [Instant-Weather](https://github.com/mayokunadeniyi/Instant-Weather) | [mayokunadeniyi](https://github.com/mayokunadeniyi) | An Android weather application implemented using the MVVM pattern, Retrofit2, Dagger2, 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: 7 days ago | 🌟 537 🍴 93 👁️ 19 |
98 | | [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: 7 days ago | 🌟 205 🍴 17 👁️ 13 |
99 | | [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: 1 week ago | 🌟 8 🍴 3 👁️ 1 |
100 | | [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: 1 week ago | 🌟 205 🍴 14 👁️ 4 |
101 | | [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: 2 weeks ago | 🌟 431 🍴 40 👁️ 25 |
102 | | [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: 2 weeks ago | 🌟 20628 🍴 6135 👁️ 1478 |
103 | | [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: 3 weeks ago | 🌟 1830 🍴 313 👁️ 53 |
104 | | [WallpaperApp](https://github.com/GeorgCantor/WallpaperApp) | [GeorgCantor](https://github.com/GeorgCantor) | App for viewing and downloading wallpapers Tech Stack : Koin, Coroutines, Retrofit, Room, Lottie, Zoomy, Navigation, LiveData, ViewModel Last commit: 3 weeks ago | 🌟 39 🍴 9 👁️ 3 |
105 | | [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: 3 weeks ago | 🌟 1169 🍴 292 👁️ 27 |
106 | | [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: 3 weeks ago | 🌟 39 🍴 6 👁️ 3 |
107 | | [MovieHunt](https://github.com/enginebai/MovieHunt) | [enginebai](https://github.com/enginebai) | Movie Android App written in Kotlin, MVVM, RxJava, Android Architecture Components. Tech Stack : Koin, RxJava, Room, Paging, Navigation, Epoxy, LiveData, ViewModel Last commit: 3 weeks ago | 🌟 257 🍴 32 👁️ 12 |
108 | | [Pokedex-AR](https://github.com/skydoves/Pokedex-AR) | [skydoves](https://github.com/skydoves) | 🦄 Android Pokedex-AR using ARCore, Sceneform, 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: 3 weeks ago | 🌟 409 🍴 25 👁️ 13 |
109 | | [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: 4 weeks ago | 🌟 431 🍴 86 👁️ 17 |
110 | | [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: 1 month ago | 🌟 1561 🍴 248 👁️ 43 |
111 | | [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: 1 month ago | 🌟 149 🍴 21 👁️ 11 |
112 | | [Praxis](https://github.com/mutualmobile/Praxis) | [mutualmobile](https://github.com/mutualmobile) | Example Android project using MVVM, DaggerAndroid, Jetpack, Data Binding, Retrofit, RxJava and Coroutines Tech Stack : Dagger, Retrofit, Coroutines, RXJava2, ViewModel, Data Binding Last commit: 1 month ago | 🌟 73 🍴 17 👁️ 7 |
113 | | [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: 1 month ago | 🌟 69 🍴 5 👁️ 2 |
114 | | [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: 2 months ago | 🌟 113 🍴 29 👁️ 4 |
115 | | [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: 2 months ago | 🌟 11 🍴 1 👁️ 1 |
116 | | [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: 2 months ago | 🌟 129 🍴 11 👁️ 3 |
117 | | [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: 2 months ago | 🌟 3329 🍴 960 👁️ 132 |
118 | | [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: 2 months ago | 🌟 1328 🍴 126 👁️ 97 |
119 | | [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: 3 months ago | 🌟 11 🍴 6 👁️ 1 |
120 | | [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: 3 months ago | 🌟 38 🍴 6 👁️ 7 |
121 | | [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: 3 months ago | 🌟 37 🍴 6 👁️ 4 |
122 | | [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: 3 months ago | 🌟 60 🍴 14 👁️ 2 |
123 | | [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: 3 months ago | 🌟 1143 🍴 131 👁️ 87 |
124 | | [Kotlin-Pokedex](https://github.com/mrcsxsiq/Kotlin-Pokedex) | [mrcsxsiq](https://github.com/mrcsxsiq) | :cyclone: A Pokedex app using ViewModel, LiveData, Room and Navigation Tech Stack : LiveData, Navigation Jetpack, ViewModel, Room, Gradle Kotlin DSL, Databinding, Retrofit, Koin and Ktlint Last commit: 3 months ago | 🌟 1205 🍴 179 👁️ 25 |
125 | | [wanandroid](https://github.com/jianjunxiao/wanandroid) | [jianjunxiao](https://github.com/jianjunxiao) | Kotlin+JetPack+协程实现的MVVM架构Wanandroid客户端 Tech Stack : Coroutines, Retrofit, Room, LiveData, ViewModel Last commit: 3 months ago | 🌟 219 🍴 38 👁️ 6 |
126 | | [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: 4 months ago | 🌟 110 🍴 17 👁️ 2 |
127 | | [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: 4 months ago | 🌟 16 🍴 8 👁️ 1 |
128 | | [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: 4 months ago | 🌟 13 🍴 1 👁️ 2 |
129 | | [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: 4 months ago | 🌟 431 🍴 63 👁️ 9 |
130 | | [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: 4 months ago | 🌟 82 🍴 15 👁️ 3 |
131 | | [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: 4 months ago | 🌟 10 🍴 4 👁️ 1 |
132 | | [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: 4 months ago | 🌟 146 🍴 21 👁️ 8 |
133 | | [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: 5 months ago | 🌟 116 🍴 40 👁️ 15 |
134 | | [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: 5 months ago | 🌟 41 🍴 7 👁️ 2 |
135 | | [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: 6 months ago | 🌟 1878 🍴 313 👁️ 87 |
136 | | [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: 6 months ago | 🌟 21 🍴 7 👁️ 3 |
137 | | [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: 6 months ago | 🌟 60 🍴 7 👁️ 1 |
138 | | [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: 6 months ago | 🌟 39 🍴 7 👁️ 1 |
139 | | [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: 6 months ago | 🌟 82 🍴 5 👁️ 61 |
140 | | [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: 6 months ago | 🌟 51 🍴 8 👁️ 2 |
141 | | [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: 7 months ago | 🌟 10 🍴 5 👁️ 1 |
142 | | [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: 7 months ago | 🌟 192 🍴 17 👁️ 4 |
143 | | [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: 7 months ago | 🌟 151 🍴 36 👁️ 4 |
144 | | [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 architecture purely written in Kotlin Tech Stack : Dagger Hilt, Coroutines, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel Last commit: 7 months ago | 🌟 304 🍴 45 👁️ 13 |
145 | | [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: 7 months ago | 🌟 108 🍴 29 👁️ 3 |
146 | | [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: 8 months ago | 🌟 3 🍴 1 👁️ 1 |
147 | | [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: 8 months ago | 🌟 33 🍴 13 👁️ 1 |
148 | | [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: 8 months ago | 🌟 4 🍴 2 👁️ 0 |
149 | | [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: 9 months ago | 🌟 1059 🍴 198 👁️ 19 |
150 | | [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: 9 months ago | 🌟 590 🍴 74 👁️ 18 |
151 | | [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: 9 months ago | 🌟 44 🍴 7 👁️ 3 |
152 | | [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: 10 months ago | 🌟 155 🍴 17 👁️ 8 |
153 | | [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: 10 months ago | 🌟 10 🍴 1 👁️ 1 |
154 | | [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: 10 months ago | 🌟 15 🍴 3 👁️ 1 |
155 | | [Knote](https://github.com/Tristankluivert/Knote) | [Tristankluivert](https://github.com/Tristankluivert) | Knote is a standard note taking app Tech Stack : ViewModel, LiveData, Koin, Room db, Coroutines etc Last commit: 10 months ago | 🌟 5 🍴 1 👁️ 2 |
156 | | [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: 11 months ago | 🌟 390 🍴 111 👁️ 12 |
157 | | [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: 11 months ago | 🌟 153 🍴 25 👁️ 5 |
158 | | [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: 11 months ago | 🌟 43 🍴 3 👁️ 3 |
159 | | [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: 11 months ago | 🌟 17 🍴 7 👁️ 2 |
160 | | [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: 12 months ago | 🌟 64 🍴 22 👁️ 6 |
161 | | [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: 1 year ago | 🌟 10 🍴 1 👁️ 2 |
162 | | [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: 1 year ago | 🌟 22 🍴 6 👁️ 2 |
163 | | [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: 1 year ago | 🌟 0 🍴 0 👁️ 1 |
164 | | [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: 1 year ago | 🌟 19 🍴 4 👁️ 2 |
165 | | [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: 1 year ago | 🌟 10 🍴 3 👁️ 2 |
166 | | [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: 1 year ago | 🌟 7 🍴 2 👁️ 1 |
167 | | [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: 1 year ago | 🌟 166 🍴 68 👁️ 28 |
168 | | [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: 1 year ago | 🌟 79 🍴 13 👁️ 6 |
169 | | [awaker](https://github.com/nahzur-h/awaker) | [nahzur-h](https://github.com/nahzur-h) | article app for android Tech Stack : RxJava, Testing, Retrofit, Room, ExoPlayer, LiveData, ViewModel Last commit: 1 year ago | 🌟 525 🍴 90 👁️ 17 |
170 | | [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: 1 year ago | 🌟 7 🍴 2 👁️ 1 |
171 | | [MVVM-Architecture-Android-Beginners](https://github.com/MindorksOpenSource/MVVM-Architecture-Android-Beginners) | [MindorksOpenSource](https://github.com/MindorksOpenSource) | This repository contains a sample app that implements MVVM architecture using Kotlin, ViewModel, LiveData, and etc. Tech Stack : Dagger, Coroutines, RXJava2, ViewModel, Data Binding, LiveData. Last commit: 1 year ago | 🌟 214 🍴 67 👁️ 12 |
172 | | [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: 1 year ago | 🌟 5 🍴 0 👁️ 0 |
173 | | [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: 1 year ago | 🌟 560 🍴 99 👁️ 16 |
174 | | [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 | 🌟 8 🍴 2 👁️ 1 |
175 | | [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: 1 year ago | 🌟 42 🍴 3 👁️ 3 |
176 | | [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 | 🌟 13 🍴 4 👁️ 1 |
177 | | [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: 2 years ago | 🌟 347 🍴 77 👁️ 19 |
178 | | [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: 2 years ago | 🌟 81 🍴 25 👁️ 15 |
179 | | [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: 2 years ago | 🌟 41 🍴 8 👁️ 3 |
180 | | [ExchangeRateApp](https://github.com/kacperczyk-dev-old-projects/ExchangeRateApp) | [kacperczyk-dev-old-projects](https://github.com/kacperczyk-dev-old-projects) | Exchange Rates application written in Kotlin using Android Architecture Components (MVVM), Dagger 2, Retrofit, Room, Lottie, Coroutines and WorkManager Tech Stack : Dagger, Coroutines, Retrofit, Room, WorkManager, Data Binding, MPAndroidChart, Navigation, LiveData, ViewModel Last commit: 2 years ago | 🌟 0 🍴 1 👁️ 1 |
181 | | [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: 2 years ago | 🌟 344 🍴 116 👁️ 20 |
182 | | [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: 2 years ago | 🌟 17 🍴 12 👁️ 2 |
183 |
184 | #### Clean Architecture
185 |
186 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 |
187 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
188 | | [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: 18 hours ago | 🌟 4898 🍴 660 👁️ 139 |
189 | | [Coroutines-Flows-Modularised](https://github.com/ferPrieto/Coroutines-Flows-Modularised) | [ferPrieto](https://github.com/ferPrieto) | Clean Architecture Modular Project: MVVM + Coroutines+ Flows + Dagger2 + LiveData + UnitTests + UITests + MockWebServer Tech Stack : Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel Last commit: 3 days ago | 🌟 217 🍴 25 👁️ 3 |
190 | | [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: 3 weeks ago | 🌟 25 🍴 1 👁️ 2 |
191 | | [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: 1 month ago | 🌟 130 🍴 31 👁️ 6 |
192 | | [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: 1 month ago | 🌟 380 🍴 75 👁️ 20 |
193 | | [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: 2 months ago | 🌟 1490 🍴 294 👁️ 57 |
194 | | [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: 6 months ago | 🌟 339 🍴 39 👁️ 6 |
195 | | [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: 8 months ago | 🌟 150 🍴 23 👁️ 12 |
196 | | [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: 9 months ago | 🌟 50 🍴 4 👁️ 1 |
197 | | [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: 10 months ago | 🌟 16 🍴 0 👁️ 1 |
198 | | [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: 1 year ago | 🌟 164 🍴 11 👁️ 8 |
199 | | [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: 1 year ago | 🌟 579 🍴 94 👁️ 26 |
200 |
201 | ### MVI
202 |
203 | #### Normal
204 |
205 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 |
206 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
207 | | [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: 1 day ago | 🌟 401 🍴 186 👁️ 24 |
208 | | [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: 2 weeks ago | 🌟 93 🍴 18 👁️ 5 |
209 | | [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: 10 months ago | 🌟 23 🍴 1 👁️ 4 |
210 | | [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: 1 year ago | 🌟 9 🍴 6 👁️ 1 |
211 |
212 | #### Clean Architecture
213 |
214 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 |
215 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
216 | | [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: 2 days ago | 🌟 335 🍴 42 👁️ 14 |
217 | | [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 weeks ago | 🌟 108 🍴 16 👁️ 6 |
218 | | [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 months ago | 🌟 291 🍴 94 👁️ 13 |
219 | | [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: 5 months ago | 🌟 313 🍴 66 👁️ 11 |
220 |
221 | ### MVP
222 |
223 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 |
224 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
225 | | [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: 28 minutes ago | 🌟 12076 🍴 1528 👁️ 510 |
226 | | [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: 6 months ago | 🌟 27 🍴 4 👁️ 3 |
227 |
228 | ## Other
229 |
230 | | Name | Author ✍️ | Description 🗒️ | Reputation 💪 |
231 | |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
232 | | [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 | 🌟 31646 🍴 11471 👁️ 1637 |
233 | | [Scarlet-Notes](https://github.com/BijoySingh/Scarlet-Notes) | [BijoySingh](https://github.com/BijoySingh) | 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: 7 months ago | 🌟 311 🍴 91 👁️ 19 |
234 | | [Screenaway](https://github.com/DimaBrody/Screenaway) | [DimaBrody](https://github.com/DimaBrody) | Phone Screen Forced Locker Tech Stack : Room, Play Install Referrer Library Last commit: 11 months ago | 🌟 8 🍴 1 👁️ 1 |
235 |
236 | ## :books: Tech Stack/Libraries
237 |
238 | - [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)
239 |
240 | ## :memo: Contributing
241 |
242 | See [contributing.md](CONTRIBUTING.md)
243 |
244 | ## :moyai: Core Contributors
245 |
246 | - [@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.
247 |
248 | ## :hatching_chick: Contributors
249 |
250 | Contributors are cool people.
251 |
252 | If you contributed and are missing in this list, please send a PR including your entry in the list below! 🐣
253 |
254 |
312 |
313 | ## :computer: Find us on
314 |
315 |
320 |
321 |
322 |
327 |
328 |
--------------------------------------------------------------------------------
/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/Bandhan-singh-katoch/awesome-android-kotlin-apps/03a112f76de56064a0aa4efee568d28dc514bf7f/assets/androiddevnotes.png
--------------------------------------------------------------------------------
/assets/count.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/kotlin.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/awesome-android-kotlin-apps.main.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bandhan-singh-katoch/awesome-android-kotlin-apps/03a112f76de56064a0aa4efee568d28dc514bf7f/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/Bandhan-singh-katoch/awesome-android-kotlin-apps/03a112f76de56064a0aa4efee568d28dc514bf7f/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 | "pattern": "Jetpack Compose Apps",
4 | "key": "$JETPACK_COMPOSE_REPOS",
5 | "projects": [
6 | {
7 | "github_url": "https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps"
8 | }
9 | ]
10 | },
11 | {
12 | "pattern": "MVVM - Normal",
13 | "key": "$MVVM_NORMAL_REPOS",
14 | "projects": [
15 | {
16 | "github_url": "https://github.com/ImnIrdst/iiCnma",
17 | "stack": "Dagger Hilt, Testing, Coroutines + Flow, Retrofit, Room, LiveData, ViewModel, Paging, Navigation"
18 | },
19 | {
20 | "github_url": "https://github.com/fabirt/roka-recipe-app",
21 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, LiveData, ViewModel, Paging, Navigation, DataStore"
22 | },
23 | {
24 | "github_url": "https://github.com/Hamza417/Inure",
25 | "stack": "LiveData, ViewModel, WebKit, APK Parser, libsu"
26 | },
27 | {
28 | "github_url": "https://github.com/ErickSumargo/Dads",
29 | "stack": "Hilt, Coroutines + Flow, UI Testing, Room, ViewModel, WorkManager, Apollo"
30 | },
31 | {
32 | "github_url": "https://github.com/tema6120/ForgetMeNot",
33 | "stack": "Coroutines + Flow, SQLDelight, Kotlin Serialization, Klock, Brackeys-IDE EditorKit"
34 | },
35 | {
36 | "github_url": "https://github.com/GerardBradshaw/MixUp",
37 | "stack": "Dagger, Coroutines, Testing, Navigation, ColorPicker, ViewModel"
38 | },
39 | {
40 | "github_url": "https://github.com/androiddevnotesforks/Bitlue",
41 | "stack": "Dagger Hilt, Coroutines + Flow, MPAndroidChart, Retrofit, LiveData, ViewModel"
42 | },
43 | {
44 | "github_url": "https://github.com/mukul500/AnimeXStream",
45 | "stack": "Retrofit, RxJava, Epoxy, ViewModel, LiveData, Navigation, Realm, ExoPlayer v2.0, Glide"
46 | },
47 | {
48 | "github_url": "https://github.com/PatilShreyas/NotyKT",
49 | "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"
50 | },
51 | {
52 | "github_url": "https://github.com/Sharkaboi/DrawingsApp",
53 | "stack": "Dagger Hilt, Coroutines, Room, Dhaval2404/ImagePicker, Subsampling Scale Image View, Navigation, LiveData, ViewModel"
54 | },
55 | {
56 | "github_url": "https://github.com/b-lam/Resplash",
57 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Firestore, Firebase In-App Messaging, Paging, Navigation, Google Play Billing, Muzei, LiveData, ViewModel"
58 | },
59 | {
60 | "github_url": "https://github.com/utsmannn/hiya-hiya-hiya",
61 | "stack": "Koin, Coroutines, Retrofit, Room, Firebase Messaging, Firebase Auth, WorkManager, Google Maps, Paging, JSoup, vanniktech/Emoji, afollestad/inline-activity-result, LiveData, ViewModel"
62 | },
63 | {
64 | "github_url": "https://github.com/ashwini009/TvFlix",
65 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel"
66 | },
67 | {
68 | "github_url": "https://github.com/fevziomurtekin/DeezerClone",
69 | "stack": "Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel,Navigation LiveData), Retrofit, Paging, Testing"
70 | },
71 | {
72 | "github_url": "https://github.com/jnkforks/PokemonGo",
73 | "stack": "Dagger Hilt, Koin, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Paging, LiveData, ViewModel"
74 | },
75 | {
76 | "github_url": "https://github.com/andyb129/AppDevToolbox",
77 | "stack": "Dagger, Coroutines, RxJava, Room, Venom, LiveData, ViewModel"
78 | },
79 | {
80 | "github_url": "https://github.com/nahzur-h/awaker",
81 | "stack": "RxJava, Testing, Retrofit, Room, ExoPlayer, LiveData, ViewModel"
82 | },
83 | {
84 | "github_url": "https://github.com/theapache64/topcorn",
85 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel"
86 | },
87 | {
88 | "github_url": "https://github.com/vmiklos/plees-tracker",
89 | "stack": "Room, LiveData, ViewModel"
90 | },
91 | {
92 | "github_url": "https://github.com/Chesire/Nekome",
93 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel"
94 | },
95 | {
96 | "github_url": "https://github.com/ardakazanci/Heyyoo",
97 | "stack": "Coroutines, Retrofit, Room, Algolia, LocGetter, EasyValidation, Dexter, Splashy, secure-preferences, Paging, Data Binding, Navigation, LiveData, ViewModel"
98 | },
99 | {
100 | "github_url": "https://github.com/lulululbj/wanandroid",
101 | "stack": "Koin, Coroutines, Testing, Retrofit, Navigation, FlowLayout, LiveData, ViewModel"
102 | },
103 | {
104 | "github_url": "https://github.com/SIKV/Photos",
105 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase-ML, Firebase-Analytics, Paging, Navigation, LiveData, ViewModel"
106 | },
107 | {
108 | "github_url": "https://github.com/ValterKasper/space-app",
109 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel"
110 | },
111 | {
112 | "github_url": "https://github.com/nominalista/expenses",
113 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, WorkManager, Navigation, LiveData, ViewModel"
114 | },
115 | {
116 | "github_url": "https://github.com/lmj0011/jetpack-release-tracker",
117 | "stack": "Coroutines, Testing, Fuel, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel"
118 | },
119 | {
120 | "github_url": "https://github.com/willowtreeapps/vocable-android",
121 | "stack": "Koin, Coroutines, Testing, Room, Data Binding, AR, LiveData, ViewModel"
122 | },
123 | {
124 | "github_url": "https://github.com/Shashank02051997/GitExplorer-Android",
125 | "stack": "LiveData, ViewModel"
126 | },
127 | {
128 | "github_url": "https://github.com/VIPyinzhiwei/Eyepetizer",
129 | "stack": "Coroutines, Testing, Retrofit, WorkManager, GSYVideoPlayer, Data Binding, PermissionX, EventBus, LiveData, ViewModel"
130 | },
131 | {
132 | "github_url": "https://github.com/PatilShreyas/Foodium",
133 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel"
134 | },
135 | {
136 | "github_url": "https://github.com/michaldrabik/Showly-2.0",
137 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Firebase Messaging, WorkManager, Navigation, Dynamicanimation, LiveData, ViewModel"
138 | },
139 | {
140 | "github_url": "https://github.com/bernaferrari/ChangeDetection",
141 | "stack": "Dagger, Coroutines, RxJava, Retrofit, Room, Firestore, WorkManager, Paging, Data Binding, Navigation, JSoup, js-evaluator-for-android, LiveData, ViewModel"
142 | },
143 | {
144 | "github_url": "https://github.com/YahiaAngelo/Noted-Android",
145 | "stack": "Koin dependency injection, Coroutines, Realm db, Material Components, Markdown, Navigation, LiveData, ViewModel"
146 | },
147 | {
148 | "github_url": "https://github.com/igorescodro/alkaa",
149 | "stack": "Koin, Espresso, UiAutomator, Mockk, Coroutines, Navigation, Room, MotionLayout, KTX, Modularization, Dynamic Delivery, Dark Theme, klint, Detekt, codebeat, CodeFactor, Codacy, MPAndroidChart, Groupie, LiveData, ViewModel"
150 | },
151 | {
152 | "github_url": "https://github.com/HariKulhari06/Covid-19-Tracker",
153 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, Firestore, WorkManager, Navigation, MPAndroidChart, LiveData, ViewModel"
154 | },
155 | {
156 | "github_url": "https://github.com/zedlabs/WallPortal",
157 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, Paging, Navigation, LiveData, ViewModel"
158 | },
159 | {
160 | "github_url": "https://github.com/ricknout/rugby-ranker",
161 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, insetter, LiveData, ViewModel"
162 | },
163 | {
164 | "github_url": "https://github.com/GeorgCantor/WallpaperApp",
165 | "stack": "Koin, Coroutines, Retrofit, Room, Lottie, Zoomy, Navigation, LiveData, ViewModel"
166 | },
167 | {
168 | "github_url": "https://github.com/DheerajKotwani/GithubVisualizer",
169 | "stack": "Retrofit, Firebase Auth, Coroutines, LiveData, ViewModel"
170 | },
171 | {
172 | "github_url": "https://github.com/PHELAT/Tedu",
173 | "stack": "Dagger, Room, Coroutines, Firebase Messaging, Navigation, LiveData, ViewModel"
174 | },
175 | {
176 | "github_url": "https://github.com/abhinav0612/PasswordVault",
177 | "stack": "Dagger Hilt, Room, Navigation, LiveData, ViewModel"
178 | },
179 | {
180 | "github_url": "https://github.com/TheCodeMonks/NYTimes-App",
181 | "stack": "Coroutines, Room, JSoup, Navigation, LiveData, ViewModel"
182 | },
183 | {
184 | "github_url": "https://github.com/satyamurti/LetsChat",
185 | "stack": "Coroutines, Retrofit, Firestore, Firebase Auth, Firebase Messaging, Firebase Storage, Cloud Functions, Data Binding, Navigation, LiveData, ViewModel"
186 | },
187 | {
188 | "github_url": "https://github.com/mayokunthefirst/Instant-Weather",
189 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, Algolia Search, LiveData, ViewModel"
190 | },
191 | {
192 | "github_url": "https://github.com/qingmei2/MVVM-Architecture",
193 | "stack": "Dagger Hilt, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel"
194 | },
195 | {
196 | "github_url": "https://github.com/nuhkoca/libbra",
197 | "stack": "Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel"
198 | },
199 | {
200 | "github_url": "https://github.com/adityam49/Updoot",
201 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, ExoPlayer, WorkManager, Data Binding, Navigation, LiveData, ViewModel, Compose"
202 | },
203 | {
204 | "github_url": "https://github.com/weylar/Movie",
205 | "stack": "Dagger, Coroutines, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, LiveData, ViewModel"
206 | },
207 | {
208 | "github_url": "https://github.com/xiaoyanger0825/wanandroid",
209 | "stack": "Coroutines, Retrofit, Room, LiveData, ViewModel"
210 | },
211 | {
212 | "github_url": "https://github.com/gs-ts/TrackMyPath",
213 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel"
214 | },
215 | {
216 | "github_url": "https://github.com/KumarManas04/NotesSync",
217 | "stack": "Coroutines, Testing, Room, Google Drive, Dropbox, WorkManager, Navigation, LiveData, ViewModel"
218 | },
219 | {
220 | "github_url": "https://github.com/CalvinNor/MovieMan/",
221 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel"
222 | },
223 | {
224 | "github_url": "https://github.com/commonpepper/Photosen",
225 | "stack": "Retrofit, Room, Paging, LiveData, ViewModel"
226 | },
227 | {
228 | "github_url": "https://github.com/OMIsie11/SpaceXFollower",
229 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, WorkManager, MPAndroidChart, Navigation, LiveData, ViewModel"
230 | },
231 | {
232 | "github_url": "https://github.com/dievskiy/feedapp",
233 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Facebook Login, WorkManager, MPAndroidChart, Data Binding, Navigation, LiveData, ViewModel"
234 | },
235 | {
236 | "github_url": "https://github.com/phicdy/MyCuration",
237 | "stack": "Koin, Coroutines, Testing, Retrofit, Jsoup, WorkManager, Data Binding, Navigation, LiveData, ViewModel"
238 | },
239 | {
240 | "github_url": "https://github.com/droidconKE/droidconKE2020App",
241 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Google Auth, Data Binding, Navigation, LiveData, ViewModel"
242 | },
243 | {
244 | "github_url": "https://github.com/fossasia/open-event-attendee-android",
245 | "stack": "Koin, RxJava, Testing, Retrofit, Room, Stripe, PayPal, Mapbox, Paging, Data Binding, Navigation, LiveData, ViewModel"
246 | },
247 | {
248 | "github_url": "https://github.com/dangquanuet/The-Movie-DB-Kotlin",
249 | "stack": "Koin, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Data Binding, Easy Permissions, Navigation, LiveData, ViewModel"
250 | },
251 | {
252 | "github_url": "https://github.com/CharlieChristensen/Cryptotracker",
253 | "stack": "Dagger, Coroutines, Testing, socketIO, Retrofit, Room, MPAndroidChart, Navigation, LiveData, ViewModel"
254 | },
255 | {
256 | "github_url": "https://github.com/haroldadmin/MoonShot",
257 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel"
258 | },
259 | {
260 | "github_url": "https://github.com/ganainy/Our_chat",
261 | "stack": "Coroutines, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, Facebook Login, WorkManager, Dexter, Data Binding, Navigation, LiveData, ViewModel"
262 | },
263 | {
264 | "github_url": "https://github.com/flexbooru/flexbooru",
265 | "stack": "Kodein, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Tikxml, LiveData, ViewModel"
266 | },
267 | {
268 | "github_url": "https://github.com/flexbooru/flexbooru-ap",
269 | "stack": "Kodein, Coroutines, Retrofit, Room, WorkManager, Navigation, Markwon, LiveData, ViewModel"
270 | },
271 | {
272 | "github_url": "https://github.com/gs-ts/BitfinexClient",
273 | "stack": "Koin, RxJava, Testing, Scarlet, Room, Data Binding, LiveData, ViewModel"
274 | },
275 | {
276 | "github_url": "https://github.com/SoftwareEngineeringDaily/software-engineering-daily-android",
277 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Android-Permissions, LiveData, ViewModel"
278 | },
279 | {
280 | "github_url": "https://github.com/GreyLabsDev/PexWalls",
281 | "stack": "Koin, Coroutines, RxJava, Retrofit, Room, Navigation, Markwon, LiveData, ViewModel"
282 | },
283 | {
284 | "github_url": "https://github.com/iammert/AppLocker",
285 | "stack": "Dagger, RxJava, Room, WorkManager, Data Binding, RxPermissions, LiveData, ViewModel"
286 | },
287 | {
288 | "github_url": "https://github.com/xiprox/Upgur",
289 | "stack": "Dagger, Retrofit, Room, WorkManager, Navigation, android-upload-service, LiveData, ViewModel"
290 | },
291 | {
292 | "github_url": "https://github.com/AbduallahAtta/Social-Note",
293 | "stack": "Koin, RxJava, Room, Firestore, Firebase Auth, Firebase Storage, Firebase Messaging, WorkManager, Data Binding, Paging, LiveData, ViewModel"
294 | },
295 | {
296 | "github_url": "https://github.com/kacperczyk-dev/ExchangeRateApp",
297 | "stack": "Dagger, Coroutines, Retrofit, Room, WorkManager, Data Binding, MPAndroidChart, Navigation, LiveData, ViewModel"
298 | },
299 | {
300 | "github_url": "https://github.com/cuongpm/youtube-dl-android",
301 | "stack": "Dagger, RxJava, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel"
302 | },
303 | {
304 | "github_url": "https://github.com/PhilippeBoisney/ArchApp",
305 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Navigation, LiveData, ViewModel"
306 | },
307 | {
308 | "github_url": "https://github.com/rumaan/file.io-Android-Client",
309 | "stack": "Testing, Fuel, Room, WorkManager, Navigation, PermissionsDispatcher, LiveData, ViewModel"
310 | },
311 | {
312 | "github_url": "https://github.com/skydoves/Pokedex",
313 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel"
314 | },
315 | {
316 | "github_url": "https://github.com/Wiqaytna-app/wiqaytna_android",
317 | "stack": "RxJava, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel"
318 | },
319 | {
320 | "github_url": "https://github.com/ZahraHeydari/MusicPlayer",
321 | "stack": "Koin, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel"
322 | },
323 | {
324 | "github_url": "https://github.com/google/iosched",
325 | "stack": "Dagger Hilt, Coroutines, Testing, Room, Firestore, Firebase Auth, Firebase Messaging, Firebase Functions, Navigation, ARCore, LiveData, ViewModel"
326 | },
327 | {
328 | "github_url": "https://github.com/romannurik/muzei",
329 | "stack": "Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel"
330 | },
331 | {
332 | "github_url": "https://github.com/mozilla-mobile/fenix",
333 | "stack": "Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel"
334 | },
335 | {
336 | "github_url": "https://github.com/rumboalla/apkupdater",
337 | "stack": "Koin, JSoup, Navigation, LiveData, ViewModel"
338 | },
339 | {
340 | "github_url": "https://github.com/VMadalin/android-modular-architecture",
341 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Navigation, Paging, Data Binding, LiveData, ViewModel"
342 | },
343 | {
344 | "github_url": "https://github.com/moezbhatti/qksms",
345 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Realm, ExoPlayer, Conductor, Data Binding, ShortcutBadger, LiveData, ViewModel"
346 | },
347 | {
348 | "github_url": "https://github.com/ApturiCOVID/apturicovid-android",
349 | "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Data Binding, ShortcutBadger, LiveData, ViewModel"
350 | },
351 | {
352 | "github_url": "https://github.com/idisfkj/AwesomeGithub",
353 | "stack": "Coroutines, RxJava, Retrofit, Room, WorkManager, Paging, Navigation, Data Binding, ARouter, LiveData, ViewModel"
354 | },
355 | {
356 | "github_url": "https://github.com/HabitRPG/habitica-android",
357 | "stack": "Dagger, Coroutines, RxJava, Retrofit, Realm, Firebase Messaging, Paging, Navigation, Facebook, FlowLayout, LiveData, ViewModel"
358 | },
359 | {
360 | "github_url": "https://github.com/KhaledSherifSayed/PopularPeople",
361 | "stack": "Koin, Coroutines, Testing, Retrofit, Data Binding, Sandwich, LiveData, ViewModel"
362 | },
363 | {
364 | "github_url": "https://github.com/alisonthemonster/Presently",
365 | "stack": "Dagger, Coroutines, RxJava, Testing, Room, Firebase Messaging, WorkManager, Dropbox, Calendar view, Paging, Biometric, LiveData, ViewModel"
366 | },
367 | {
368 | "github_url": "https://github.com/fibelatti/raffler-kotlin",
369 | "stack": "Dagger, Coroutines, Testing, Room, LiveData, ViewModel"
370 | },
371 | {
372 | "github_url": "https://github.com/sanmiAde/Yet_Another_Anime_List",
373 | "stack": "Dagger, RxJava, Testing using Fakes, MockWebserver, RxRetrofit, Room, Navigation Components, Lottie, LiveData, ViewModel"
374 | },
375 | {
376 | "github_url": "https://github.com/OMIsie11/CovidNow",
377 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, MPAndroidChart, LiveData, ViewModel"
378 | },
379 | {
380 | "github_url": "https://github.com/KevinGitonga/TukoNewsClient",
381 | "stack": "Coroutines, Retrofit, Room, LiveData, ViewModel"
382 | },
383 | {
384 | "github_url": "https://github.com/KevinGitonga/NewsFeed",
385 | "stack": "Coroutines, Retrofit, Room, Pretty Time, LiveData, ViewModel"
386 | },
387 | {
388 | "github_url": "https://github.com/auron567/Gallerit",
389 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel"
390 | },
391 | {
392 | "github_url": "https://github.com/enginebai/MovieHunt",
393 | "stack": "Koin, RxJava, Room, Paging, Navigation, Epoxy, LiveData, ViewModel"
394 | },
395 | {
396 | "github_url": "https://github.com/Shivamdhuria/flows_guide",
397 | "stack": "Dagger Hilt, Coroutines, Flows, Retrofit, Room, Material Design Components, Navigation, LiveData, ViewModel"
398 | },
399 | {
400 | "github_url": "https://github.com/rizmaulana/kotlin-mvvm-covid19",
401 | "stack": "LiveData, Koin, RxJava, RxBinding, Offline first with simple caching, Spek2Framwework for Unit Testing, etc"
402 | },
403 | {
404 | "github_url": "https://github.com/Tristankluivert/Knote",
405 | "stack": "ViewModel, LiveData, Koin, Room db, Coroutines etc"
406 | },
407 | {
408 | "github_url": "https://github.com/Devansh-Maurya/PukaPuka",
409 | "stack": "LiveData, ViewModel, Navigation Components, CameraKit, Firebase ML Kit Text Recognition API, Glide, Volley, Lottie"
410 | },
411 | {
412 | "github_url": "https://github.com/fionicholas/Football-App",
413 | "stack": "LiveData, ViewModel, Retrofit, Room, Koin, RxJava, etc"
414 | },
415 | {
416 | "github_url": "https://github.com/ryanrvldo/MovieCatalogue",
417 | "stack": "ViewModel, LiveData, Coroutines, Firebase Cloud Messaging, Retrofit, Room, Glide, Dagger Hilt, and Google Material."
418 | },
419 | {
420 | "github_url": "https://github.com/mutualmobile/Praxis",
421 | "stack": "Dagger, Retrofit, Coroutines, RXJava2, ViewModel, Data Binding"
422 | },
423 | {
424 | "github_url": "https://github.com/MindorksOpenSource/MVVM-Architecture-Android-Beginners",
425 | "stack": "Dagger, Coroutines, RXJava2, ViewModel, Data Binding, LiveData."
426 | },
427 | {
428 | "github_url": "https://github.com/skydoves/Pokedex-AR",
429 | "stack": "Dagger Hilt, Coroutines, Retrofit, Room, ARCore, Sceneform, ViewModel, Data Binding, LiveData."
430 | },
431 | {
432 | "github_url": "https://github.com/mrcsxsiq/Kotlin-Pokedex",
433 | "stack": "LiveData, Navigation Jetpack, ViewModel, Room, Gradle Kotlin DSL, Databinding, Retrofit, Koin and Ktlint"
434 | }
435 | ]
436 | },
437 | {
438 | "pattern": "MVVM - Clean Architecture",
439 | "key": "$MVVM_CLEAN_ARCH_REPOS",
440 | "projects": [
441 | {
442 | "github_url": "https://github.com/sanogueralorenzo/Android-Kotlin-Clean-Architecture",
443 | "stack": "Dagger Hilt, Testing, RxJava, Retrofit, AssistedInject, Epoxy, RxPaper, MvRx, ViewModel"
444 | },
445 | {
446 | "github_url": "https://github.com/happysingh23828/Android-Clean-Architecture",
447 | "stack": "Dagger, Unit Testing for modules, Mockito, RxJava, Retrofit, Room, CI-CD, SOLID, Code Coverage, Jacoco, Detekt, ktlint, Stetho, LiveData, ViewModel"
448 | },
449 | {
450 | "github_url": "https://github.com/igorwojda/android-showcase",
451 | "stack": "Kodein, Coroutines, Testing, Retrofit, KAndroid, Lottie, Detekt, Navigation, Dynamic Feature Modules, LiveData, ViewModel"
452 | },
453 | {
454 | "github_url": "https://github.com/ferPrieto/Coroutines-Flows-Modularised",
455 | "stack": "Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel"
456 | },
457 | {
458 | "github_url": "https://github.com/akoufa/CoolWeather",
459 | "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel"
460 | },
461 | {
462 | "github_url": "https://github.com/odaridavid/Clean-MVVM-ArchComponents",
463 | "stack": "Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Motion Layout, LiveData, ViewModel"
464 | },
465 | {
466 | "github_url": "https://github.com/andremion/Theatre",
467 | "stack": "Dagger, RxJava, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel"
468 | },
469 | {
470 | "github_url": "https://github.com/HamdiBoumaiza/CoronavirusWorldStatus",
471 | "stack": "Dagger, Coroutines, Retrofit, Room, LiveData, ViewModel , Stetho"
472 | },
473 | {
474 | "github_url": "https://github.com/SmartToolFactory/PropertyFindAR",
475 | "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"
476 | },
477 | {
478 | "github_url": "https://github.com/sansets/android-clean-architecture",
479 | "stack": "Navigation Component, Dagger, Coroutines Flow, Room, Retrofit, LiveData, ViewModel, View Binding, Dynamic Feature Modules."
480 | },
481 | {
482 | "github_url": "https://github.com/VladimirWrites/BLTaxi",
483 | "stack": "Koin, Retrofit, Room, Data Binding, LiveData, View Model, Work Manager, Material Components"
484 | },
485 | {
486 | "github_url": "https://github.com/akhilesh0707/Rick-and-Morty",
487 | "stack": "Kotlin, Coroutines, Flow, Dagger-Hilt, Kotlin-DSL, LiveData, Lifecycle, ViewModel, Room, Navigation, Data Binding, Material-Components, Retrofit, OkHttp, Moshi, Timber, Glide"
488 | }
489 | ]
490 | },
491 | {
492 | "pattern": "MVI - Normal",
493 | "key": "$MVI_NORMAL_REPOS",
494 | "projects": [
495 | {
496 | "github_url": "https://github.com/HadySalhab/NewsFeed-MVI-Dagger",
497 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel"
498 | },
499 | {
500 | "github_url": "https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack",
501 | "stack": "Koin, Coroutines, RxJava, Retrofit, Room, Firestore, Firebase Auth, Firebase Storage, WorkManager, Navigation, Paging, LiveData, ViewModel"
502 | },
503 | {
504 | "github_url": "https://github.com/R4md4c/GameDealz",
505 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, acra, fastAdapter, Paging, JSoup, dropbox/Store, LiveData, ViewModel"
506 | },
507 | {
508 | "github_url": "https://github.com/mitchtabian/Open-API-Android-App",
509 | "stack": "Dagger, Coroutines, Retrofit, Room, Navigation, LiveData, ViewModel"
510 | }
511 | ]
512 | },
513 | {
514 | "pattern": "MVI - Clean Architecture",
515 | "key": "$MVI_CLEAN_ARCH_REPOS",
516 | "projects": [
517 | {
518 | "github_url": "https://github.com/lopspower/CleanRxArchitecture",
519 | "stack": "Dagger, RxJava, Retrofit, Room, Clean Architecture, LiveData, ViewModel"
520 | },
521 | {
522 | "github_url": "https://github.com/mitchtabian/Clean-Notes",
523 | "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Firestore, Firebase Auth, Navigation, Markdown Processor, LiveData, ViewModel"
524 | },
525 | {
526 | "github_url": "https://github.com/Ezike/Baking-App-Kotlin",
527 | "stack": "Dagger hilt, Coroutines & StateFlow, Unit Testing, Retrofit, DFM Navigation, FlowBinding, Exoplayer"
528 | },
529 | {
530 | "github_url": "https://github.com/Ezike/MVI_UIComponents",
531 | "stack": "Jetpack, Dagger hilt, Coroutines & StateFlow, Room, Retrofit, FlowBinding"
532 | }
533 | ]
534 | },
535 | {
536 | "pattern": "MVP",
537 | "key": "$MVP_REPOS",
538 | "projects": [
539 | {
540 | "github_url": "https://github.com/inorichi/tachiyomi",
541 | "stack": "Inorichi injekt, Coroutines, RxJava, Testing, Retrofit, DiskLruCache, Jsoup, WorkManager, Duktape Android, Conductor"
542 | },
543 | {
544 | "github_url": "https://github.com/ImangazalievM/UTair-MVP-Sample",
545 | "stack": "Clean Architecture, Coroutines, RxJava 2, Coroutines, Toothpick, Moxy, Unit-tests (Spek, Mockk), UI-tests (Kaspresso)"
546 | }
547 | ]
548 | },
549 | {
550 | "pattern": "Other",
551 | "key": "$OTHER_REPOS",
552 | "projects": [
553 | {
554 | "github_url": "https://github.com/shadowsocks/shadowsocks-android",
555 | "stack": "Testing, Room, Firebase Ads, WorkManager"
556 | },
557 | {
558 | "github_url": "https://github.com/DimaBrody/Screenaway",
559 | "stack": "Room, Play Install Referrer Library"
560 | },
561 | {
562 | "github_url": "https://github.com/BijoySingh/Scarlet-Notes",
563 | "stack": "Dagger, Coroutines, Room, Firebase Auth, Firebase Database, Paging, Navigation, Evernote android-job, Facebook Litho, Facebook SoLoader, Biometric"
564 | }
565 | ]
566 | }
567 | ]
568 |
--------------------------------------------------------------------------------
/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 javax.inject.Inject
14 | import kotlin.system.exitProcess
15 |
16 | fun main(args: Array) = runBlocking {
17 | App().run()
18 | }
19 |
20 | class App {
21 |
22 | @Inject
23 | lateinit var githubRepo: GitHubRepo
24 |
25 | @Inject
26 | lateinit var inputDataRepo: InputDataRepo
27 |
28 | @Inject
29 | lateinit var readMeRepo: ReadMeRepo
30 |
31 | suspend fun run() {
32 |
33 | // Init DI first
34 | DaggerAppComponent
35 | .builder()
36 | .build()
37 | .inject(this)
38 |
39 |
40 | val inputProjectCategories = inputDataRepo.getInputProjectCategories()
41 | val totalInputProjectCount = inputProjectCategories.sumBy { it.inputProjects.size }
42 | val projectMap = getProjectsMap(inputProjectCategories)
43 |
44 | // This is to make sure that all project details are collected
45 | require(projectMap.size == totalInputProjectCount) {
46 | """
47 | Expected $totalInputProjectCount but found only ${projectMap.size}.
48 | Failed to get some project details.
49 | """.trimIndent()
50 | }
51 |
52 | // Now let's go build the README.md
53 | val readMeModel = readMeRepo.getReadMeModel()
54 | val updatedReadMe = ReadMeGenerator.generateReadMe(readMeModel, inputProjectCategories, projectMap)
55 | readMeRepo.saveReadMe(updatedReadMe)
56 | println("Done!")
57 | exitProcess(0)
58 | }
59 |
60 |
61 | /**
62 | * To convert all projects into one single map with all details collected from GitHub API
63 | */
64 | private suspend fun getProjectsMap(inputProjectCategories: List): Map {
65 | val projectsMap = mutableMapOf()
66 |
67 | for (projectCategory in inputProjectCategories) {
68 | for (inputProject in projectCategory.inputProjects) {
69 |
70 | val url = inputProject.githubUrl
71 | val s1 = url.split("/")
72 |
73 | val username = s1[3]
74 | val repoName = s1[4]
75 |
76 | try {
77 | val githubRepo = githubRepo.getRepo(username, repoName)
78 | val project = Project(
79 | githubRepo.name!!,
80 | githubRepo.htmlUrl!!,
81 | githubRepo.description,
82 | githubRepo.owner!!.login!!,
83 | githubRepo.owner.htmlUrl!!,
84 | Project.Reputation(
85 | githubRepo.forks!!,
86 | githubRepo.stargazersCount!!,
87 | githubRepo.subscribersCount!!
88 | ),
89 | DateTimeUtils.fromUtcToUtcMillis(githubRepo.pushedAt),
90 | inputProject.stack
91 | )
92 | projectsMap[inputProject.githubUrl] = project
93 | println("Finished : ${inputProject.githubUrl} -> $project")
94 | } catch (e: HttpException) {
95 | println("Failed: ${inputProject.githubUrl}")
96 | throw e
97 | }
98 | }
99 | }
100 |
101 | return projectsMap
102 | }
103 | }
--------------------------------------------------------------------------------
/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 | /**
14 | * Get input projects
15 | */
16 | fun getInputProjectCategories(): List {
17 | // Parsing data
18 | val dataJson = File("input_data.json").readText()
19 | val dataItemListType = Types.newParameterizedType(List::class.java, InputProjectCategory::class.java)
20 | val inputDataAdapter = moshi.adapter>(dataItemListType)
21 | return inputDataAdapter.fromJson(dataJson)!!
22 | /*.map {
23 | it.copy(
24 | inputProjects = if (it.inputProjects.size > 5) {
25 | it.inputProjects.subList(0, 2)
26 | } else {
27 | it.inputProjects.subList(0, 1)
28 | }
29 | )
30 | }*/
31 | }
32 | }
--------------------------------------------------------------------------------
/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/Bandhan-singh-katoch/awesome-android-kotlin-apps/03a112f76de56064a0aa4efee568d28dc514bf7f/stale_outputs_checked
--------------------------------------------------------------------------------
/test.file:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bandhan-singh-katoch/awesome-android-kotlin-apps/03a112f76de56064a0aa4efee568d28dc514bf7f/test.file
--------------------------------------------------------------------------------