diff --git a/.github/workflows/update_readme.yml b/.github/workflows/update_readme.yml new file mode 100644 index 00000000..bb856ad1 --- /dev/null +++ b/.github/workflows/update_readme.yml @@ -0,0 +1,34 @@ +name: Update README + +on: + push: + branches: + - master + schedule: + - cron: '0 */6 * * *' + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Get latest repo + uses: actions/checkout@master + - name: Create local changes + run: java -jar awesome-android-kotlin-apps.main.jar + env: + GITHUB_ACCESS_TOKEN: ${{ secrets.THE_GITHUB_ACCESS_TOKEN }} + - name: Commit files + run: | + git config --local user.email "theapache64-bot@gmail.com" + git config --local user.name "theapache64-bot" + git commit -m "๐Ÿš€ UPDATE README!" -a + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.THE_GITHUB_ACCESS_TOKEN }} diff --git a/.gitignore b/.gitignore index 77dde138..78f02894 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,154 @@ -.DS_Store -desktop.ini \ No newline at end of file + +# Created by https://www.toptal.com/developers/gitignore/api/kotlin,intellij,gradle +# Edit at https://www.toptal.com/developers/gitignore?templates=kotlin,intellij,gradle + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +### Kotlin ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Gradle ### +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +### Gradle Patch ### +**/build/ + +# End of https://www.toptal.com/developers/gitignore/api/kotlin,intellij,gradle +SecretConstants.kt +!awesome-android-kotlin-apps.main.jar \ No newline at end of file diff --git a/.gradle/6.3/fileHashes/fileHashes.lock b/.gradle/6.3/fileHashes/fileHashes.lock new file mode 100644 index 00000000..97a6d236 Binary files /dev/null and b/.gradle/6.3/fileHashes/fileHashes.lock differ diff --git a/.gradle/6.5/executionHistory/executionHistory.bin b/.gradle/6.5/executionHistory/executionHistory.bin new file mode 100644 index 00000000..b3d33020 Binary files /dev/null and b/.gradle/6.5/executionHistory/executionHistory.bin differ diff --git a/.gradle/6.5/executionHistory/executionHistory.lock b/.gradle/6.5/executionHistory/executionHistory.lock new file mode 100644 index 00000000..7f838fcf Binary files /dev/null and b/.gradle/6.5/executionHistory/executionHistory.lock differ diff --git a/.gradle/6.5/fileChanges/last-build.bin b/.gradle/6.5/fileChanges/last-build.bin new file mode 100644 index 00000000..f76dd238 Binary files /dev/null and b/.gradle/6.5/fileChanges/last-build.bin differ diff --git a/.gradle/6.5/fileHashes/fileHashes.bin b/.gradle/6.5/fileHashes/fileHashes.bin new file mode 100644 index 00000000..c91bd198 Binary files /dev/null and b/.gradle/6.5/fileHashes/fileHashes.bin differ diff --git a/.gradle/6.5/fileHashes/fileHashes.lock b/.gradle/6.5/fileHashes/fileHashes.lock new file mode 100644 index 00000000..671a97f0 Binary files /dev/null and b/.gradle/6.5/fileHashes/fileHashes.lock differ diff --git a/.gradle/6.5/gc.properties b/.gradle/6.5/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 00000000..43f19ec8 Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 00000000..659c9fd7 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Nov 04 19:20:35 IST 2020 +gradle.version=6.3 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 00000000..357d4346 Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock new file mode 100644 index 00000000..26fb1a1f Binary files /dev/null and b/.gradle/checksums/checksums.lock differ diff --git a/.gradle/checksums/sha1-checksums.bin b/.gradle/checksums/sha1-checksums.bin new file mode 100644 index 00000000..b340bea3 Binary files /dev/null and b/.gradle/checksums/sha1-checksums.bin differ diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/.idea/artifacts/awesome_android_kotlin_apps_main_jar.xml b/.idea/artifacts/awesome_android_kotlin_apps_main_jar.xml new file mode 100644 index 00000000..af2f9308 --- /dev/null +++ b/.idea/artifacts/awesome_android_kotlin_apps_main_jar.xml @@ -0,0 +1,27 @@ + + + $PROJECT_DIR$ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..31d977a0 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..79ee123c --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..61a9130c --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..13a8247e --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..fdc392fe --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..38167d7b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/contributing.md b/CONTRIBUTING.md similarity index 53% rename from contributing.md rename to CONTRIBUTING.md index ccbfb71b..4d6752b6 100644 --- a/contributing.md +++ b/CONTRIBUTING.md @@ -6,10 +6,9 @@ - Explain what the PR fixes or improves. - - If your PR aims to add a new app to list, specify the tech stack and explain why is it worth to include. +- If you aim to add a new app to list, specify the tech stack and explain why is it worth to include via [raising an issue here](https://github.com/androiddevnotes/awesome-android-kotlin-apps/issues/new?title=Add%20New%20Repo&body=**Repo%20UR**:%20REPO_URL_GOES_HERE%20**Tech%20Stack**:%20TECH_STACK_GOES_HERE&label=new-repo) + - - - Use sensible commit messages - If your PR fixes a separate issue number, include it in the commit message. diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 00000000..dae6a601 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: com.github.aaka.AppKt + diff --git a/README.md b/README.md index e540a62a..2b40b0d4 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

- Awesome Android Kotlin Apps Count badge + Awesome Android Kotlin Apps Count badge Android Language Badge Kotlin Language Badge androiddevnotes GitHub badge @@ -22,920 +22,196 @@ **Awesome Android Kotlin Apps** aims to be the starting point for developers to find an Android app with a particular Tech Stack / Libraries. -## Contents - -:art: [**Pattern**](#art-pattern) +___๐Ÿ”ƒ Last updated : Tue Nov 10 18:35:48 UTC 2020___ +## Contents -- [Jetpack Compose Apps](#jetpack-compose-apps) - -- [Model View ViewModel (MVVM)](#mvvm) +:art: [**Pattern**](https://github.com/androiddevnotes/awesome-android-kotlin-apps#art-pattern) - - [Normal](#normal) - - [Clean Architecture](#clean-architecture) -- [Model View Intent (MVI)](#mvi) +- [Jetpack Compose Apps](https://github.com/androiddevnotes/awesome-android-kotlin-apps#jetpack-compose-apps) - - [Normal](#normal-1) - - [Clean Architecture](#clean-architecture-1) +- [Model View ViewModel (MVVM)](https://github.com/androiddevnotes/awesome-android-kotlin-apps#mvvm) -- [Model View Presenter (MVP)](#mvp) + - [Normal](https://github.com/androiddevnotes/awesome-android-kotlin-apps#normal) + - [Clean Architecture](https://github.com/androiddevnotes/awesome-android-kotlin-apps#clean-architecture) -- [Model View Controller (MVC) and Other Patterns](#other) +- [Model View Intent (MVI)](https://github.com/androiddevnotes/awesome-android-kotlin-apps#mvi) + - [Normal](https://github.com/androiddevnotes/awesome-android-kotlin-apps#normal-1) + - [Clean Architecture](https://github.com/androiddevnotes/awesome-android-kotlin-apps#clean-architecture-1) -:books: [**Tech Stack/Libraries**](#books-tech-stacklibraries) +- [Model View Presenter (MVP)](https://github.com/androiddevnotes/awesome-android-kotlin-apps#mvp) -:memo: [**Contributing**](#memo-contributing) +- [Model View Controller (MVC) and Other Patterns](https://github.com/androiddevnotes/awesome-android-kotlin-apps#other) -:lotus_position_woman: [**Contributors**](#lotus_position_woman-contributors) +:books: [**Tech Stack/Libraries**](https://github.com/androiddevnotes/awesome-android-kotlin-apps#books-tech-stacklibraries) +:memo: [**Contributing**](https://github.com/androiddevnotes/awesome-android-kotlin-apps#memo-contributing) ## :art: Pattern ### Jetpack Compose Apps -- https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps - - - **A curated list of awesome Jetpack Compose android apps by open-source contributors.** - - - Awesome Jetpack Compose Android Apps aims to be the starting point for developers to find an Android app with a Jetpack Compose suite of libraries. +| Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | +|--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| +| [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: 3 days ago | ๐ŸŒŸ 89
๐Ÿด 9
๐Ÿ‘๏ธ 1 | ### MVVM #### Normal -- https://github.com/PatilShreyas/NotyKT - - - ๐Ÿ“’ 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, MVVM, LiveData, ViewModel, Room DB, DataStore, Jetpack Security, WorkManager, Dagger Hilt DI, Jetpack Compose, Material UI, Retrofit, Moshi - -- https://github.com/Sharkaboi/DrawingsApp - - - 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 - -- https://github.com/b-lam/Resplash - - - Unofficial Unsplash Android App - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, Firestore, Firebase In-App Messaging, Paging, Navigation, Google Play Billing, Muzei, LiveData, ViewModel - -- https://github.com/utsmannn/hiya-hiya-hiya - - - 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 - -- https://github.com/ashwini009/TvFlix - - - TVFlix connects with TVDB API to give you popular shows and let you mark anyone as favorite. - - - Tech Stack = Dagger Hilt, Coroutines, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel - -- https://github.com/fevziomurtekin/DeezerClone - - - Deezer Clone application. Fetching data from the network and integrating local data in the database via repository pattern. - - - Tech Stack = Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel,Navigation LiveData), Retrofit, Paging, Testing - -- https://github.com/vidit135g/Replify-Messenger [Kotlin + Java] - - - Minimal text messenger with a ton of features. - - - - Tech Stack = Dagger, Coroutines, RxJava, Testing, Realm, ExoPlayer, Conductor, Mixpanel Android, libphonenumber-android, Call Control DataShare, LiveData, ViewModel - - -- https://github.com/jnkforks/PokemonGo - - - Jetpack ๅฎžๆˆ˜้กน็›ฎ PokemonGo๏ผˆ็ฅžๅฅ‡ๅฎ่ด๏ผ‰ๅŸบไบŽ MVVM ๆžถๆž„ๅ’Œ Repository ่ฎพ่ฎกๆจกๅผ - - - - Tech Stack = Dagger Hilt, Koin, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Paging, LiveData, ViewModel - - -- https://github.com/andyb129/AppDevToolbox - - - Collection of tools for Android app development in one place ๐Ÿ”ง ๐Ÿ”จ - - - - Dagger, Coroutines, RxJava, Room, Venom, LiveData, ViewModel - - -- https://github.com/nahzur-h/awaker - - - article app for android - - - - Tech Stack = RxJava, Testing, Retrofit, Room, ExoPlayer, LiveData, ViewModel - - -- https://github.com/theapache64/topcorn - - - A minimalistic movie listing app to browse IMDB's top 250 movies. - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel - - -- https://github.com/vmiklos/plees-tracker - - - Plees Tracker is a simple sleep tracker for your Android phone. - - - - Tech Stack = Room, LiveData, ViewModel - - -- https://github.com/Chesire/Nekome - - - Android application to manage tracked Anime and Manga lists. - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel - -- https://github.com/ardakazanci/Heyyoo - - - Heyyoo is a sample social media Android application ๐Ÿ“ฑ built to demonstrate use of Modern Android development tools. - - - Tech Stack = Coroutines, Retrofit, Room, Algolia, LocGetter, EasyValidation, Dexter, Splashy, secure-preferences, Paging, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/lulululbj/wanandroid/ - - - Jetpack MVVM For Wanandroid ๆœ€ไฝณๅฎž่ทต ๏ผ - - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Navigation, FlowLayout, LiveData, ViewModel - -- https://github.com/SIKV/Photos - - - Browse, search, download, and share amazing free photos provided by talented photographers on Unsplash and Pexels. - - - - Tech Stack = Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase-ML, Firebase-Analytics, Paging, Navigation, LiveData, ViewModel - - -- https://github.com/ValterKasper/space-app - - - An android app that shows time-line of upcoming rocket launches. - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/nominalista/expenses - - - App written in Kotlin for budget tracking. - - - - Tech Stack = Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, WorkManager, Navigation, LiveData, ViewModel - - -- https://github.com/lmj0011/jetpack-release-tracker - - - Stay up to date on the latest AndroidX library releases. - - - - Tech Stack = Coroutines, Testing, Fuel, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/willowtreeapps/vocable-android - - - Vocable AAC allows those with conditions such as MS, stroke, ALS, or spinal cord injuries to communicate using an app that tracks head movements, without the need to spend tens of thousands of dollars on technology to do so. - - - - Tech Stack = Koin, Coroutines, Testing, Room, Data Binding, AR, LiveData, ViewModel - - - -- https://github.com/Shashank02051997/GitExplorer-Android - - - Find the right git commands ๐Ÿ”ฅ without digging through the web.๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜‰ - - - - Tech Stack = Kotlin, LiveData, ViewModel - - -- https://github.com/VIPyinzhiwei/Eyepetizer - - - ๐Ÿ”ฅๅŸบไบŽ Kotlin ่ฏญ่จ€ไปฟๅ†™ใ€Œๅผ€็œผ Eyepetizerใ€็š„ไธ€ไธช็Ÿญ่ง†้ข‘ Android ๅฎขๆˆท็ซฏ้กน็›ฎ๏ผŒ้‡‡็”จ Jetpack + ๅ็จ‹ๅฎž็Žฐ็š„ MVVM ๆžถๆž„ใ€‚ - - - - Tech Stack = Coroutines, Testing, Retrofit, WorkManager, GSYVideoPlayer, Data Binding, PermissionX, EventBus, LiveData, ViewModel - - -- https://github.com/PatilShreyas/Foodium - - - ๐ŸฒFoodium is a sample food blog Android application ๐Ÿ“ฑ - - - - Tech Stack = Dagger Hilt, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel - - -- https://github.com/michaldrabik/Showly-2.0 - - - Showly 2.0 is modern, slick, open-sourced and completely free Android TV Shows Tracker. - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, Firebase Messaging, WorkManager, Navigation, Dynamicanimation, LiveData, ViewModel - -- https://github.com/bernaferrari/ChangeDetection - - - 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 - - -- https://github.com/YahiaAngelo/Noted-Android - - - Notes and Tasks app where you can add notes and tasks with Reminders also with categories. - - - Tech Stack = Koin dependency injection, Coroutines, Realm db, Material Components, Markdown, Navigation, LiveData, ViewModel - - -- https://github.com/igorescodro/alkaa - - - A simple to-do app created to study the latest components, architecture, tools, and APIs released in Android Platform. The project evolved a lot in the last year and now is available on Google Play! :heart: - - - - 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 - -- https://github.com/HariKulhari06/Covid-19-Tracker - - - A Sample to track COVID-19 cases in India and globally. - - - Tech Stack = Dagger Hilt, Coroutines, Retrofit, Room, Firestore, WorkManager, Navigation, MPAndroidChart, LiveData, ViewModel - - -- https://github.com/zedlabs/WallPortal - - - Minimal Wallpapers for Android. The goal of this project is to create a responsive application and with optimized networking, a good place to see implementation. moved to wallhaven.cc api from unsplashed api due to rate limits. - - - Tech Stack = Dagger Hilt, Coroutines, Retrofit, Room, Paging, Navigation, LiveData, ViewModel - - -- https://github.com/ricknout/rugby-ranker - - - 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 - - -- https://github.com/GeorgCantor/WallpaperApp - - - **WallpaperApp** App for viewing and downloading wallpapers. - - - Tech Stack = Koin, Coroutines, Retrofit, Room, Lottie, Zoomy, Navigation, LiveData, ViewModel - - - -- https://github.com/DheerajKotwani/GithubVisualizer - - - **Github Visualizer** Android Application to track any user activity on Github built using the Github Developers Api. Implementation for almost all methods Github Developers Api.๐Ÿ”ฅ๐Ÿ”ฅ - - - Tech Stack = Retrofit, Firebase Auth, Coroutines, LiveData, ViewModel - - -- https://github.com/PHELAT/Tedu - - - **๐Ÿ“ Tedu** Todo app, but minimal, open-source and free. It lets you to sync your todos on your cloud provider. This project is architected in a modular structure and you can learn a lot from it. - - - Tech Stack = Dagger, Room, Coroutines, Firebase Messaging, Navigation, LiveData, ViewModel - -- https://github.com/abhinav0612/PasswordVault - - - **:lock: Password Vault** is an all in one offline password storing application where you can also store debit/credit cards and bank details with one :key: Master PIN. - - - Tech Stack = Dagger Hilt, Room, Navigation, LiveData, ViewModel - - -- https://github.com/TheCodeMonks/NYTimes-App - - - **๐Ÿ—ฝ NY Times App** is an Minimal News ๐Ÿ—ž Android application built to describe the use of JSoup with Modern Android development tools. - - - - Tech Stack = Coroutines, Room, JSoup, Navigation, LiveData, ViewModel - - -- https://github.com/satyamurti/LetsChat - - - **An opensource Indian chat app** with new cool concepts. - - - - Tech Stack = Coroutines, Retrofit, Firestore, Firebase Auth, Firebase Messaging, Firebase Storage, Cloud Functions, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/mayokunthefirst/Instant-Weather - - - Instant Weather fetches data from the OpenWeatherMap API. - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, Algolia Search, LiveData, ViewModel - - -- https://github.com/qingmei2/MVVM-Architecture - - - The practice of MVVM + Jetpack architecture in Android. - - - - Tech Stack = Dagger Hilt, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel - - -- https://github.com/nuhkoca/libbra - - - A currency tracker app demonstration. - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/adityam49/Updoot - - - A reddit client built for android - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/weylar/Movie - - - A simple movie app - - - - Tech Stack = Dagger, Coroutines, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/xiaoyanger0825/wanandroid - - - Kotlin+JetPack+ๅ็จ‹ๅฎž็Žฐ็š„MVVMๆžถๆž„Wanandroidๅฎขๆˆท็ซฏ - - - - Tech Stack = Coroutines, Retrofit, Room, LiveData, ViewModel - - -- https://github.com/gs-ts/TrackMyPath - - - An android app that tracks your walk with images every 100 meters. - - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel - - -- https://github.com/KumarManas04/NotesSync - - - It can encrypt and sync notes to the user's own Google Drive or Dropbox accounts. - - - - Tech Stack = Coroutines, Testing, Room, Google Drive, Dropbox, WorkManager, Navigation, LiveData, ViewModel - - -- https://github.com/CalvinNor/MovieMan/ - - - An open-source Android app for viewing Movies / TV information. - - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel - - -- https://github.com/commonpepper/Photosen - - - Android app for viewing and downloading Flickr photos. - - - - Tech Stack = Retrofit, Room, Paging, LiveData, ViewModel - - -- https://github.com/OMIsie11/SpaceXFollower - - - Android app that helps You keep up with SpaceX ๐Ÿš€ - - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, WorkManager, MPAndroidChart, Navigation, LiveData, ViewModel - - -- https://github.com/dievskiy/feedapp - - - 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 - - -- https://github.com/phicdy/MyCuration - - - RSS Reader for Android with article filtering and curation. - - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Jsoup, WorkManager, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/droidconKE/droidconKE2020App - - - Android app fully written in Kotlin for droidconKE2020 - - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, Google Auth, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/fossasia/open-event-attendee-android - - - Open Event Attendee Android General App - - - - Tech Stack = Koin, RxJava, Testing, Retrofit, Room, Stripe, PayPal, Mapbox, Paging, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/dangquanuet/The-Movie-DB-Kotlin - - - 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 - - -- https://github.com/CharlieChristensen/Cryptotracker - - - Displays live prices of many types of cryptocoins as well as create a wallet to track total portfolio value. - - - - Tech Stack = Dagger, Coroutines, Testing, socketIO, Retrofit, Room, MPAndroidChart, Navigation, LiveData, ViewModel - - -- https://github.com/haroldadmin/MoonShot - - - A SpaceX companion app for Android - - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel - - -- https://github.com/ganainy/Our_chat - - - Private chat app with realtime notification and support audio messages, image sharing, file sharing. - - - - Tech Stack = Coroutines, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, Facebook Login, WorkManager, Dexter, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/flexbooru/flexbooru - - - A booru client for Android, support Danbooru, Moebooru, Gelbooru, Sankaku, etc - - - - Tech Stack = Kodein, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Tikxml, LiveData, ViewModel - - -- https://github.com/flexbooru/flexbooru-ap - - - An anime-pictures.net client for Android. - - - - Tech Stack = Kodein, Coroutines, Retrofit, Room, WorkManager, Navigation, Markwon, LiveData, ViewModel - - -- https://github.com/gs-ts/BitfinexClient - - - An android app that showing the details of the BTC/USD currency pair, at real-time. - - - - Tech Stack = Koin, RxJava, Testing, Scarlet, Room, Data Binding, LiveData, ViewModel - - -- https://github.com/SoftwareEngineeringDaily/software-engineering-daily-android - - - Android client for Software Engineering Daily - - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Android-Permissions, LiveData, ViewModel - - -- https://github.com/GreyLabsDev/PexWalls - - - Wallpaper app based on pexels.com API. - - - - Tech Stack = Koin, Coroutines, RxJava, Retrofit, Room, Navigation, Markwon, LiveData, ViewModel - - -- https://github.com/iammert/AppLocker - - - ๐Ÿ” Open source app locker, vault, call blocker application - - - - Tech Stack = Dagger, RxJava, Room, WorkManager, Data Binding, RxPermissions, LiveData, ViewModel - - -- https://github.com/xiprox/Upgur - - - An offline-first Imgur client app that lets you view your albums and photos and upload new ones even if you are offline. - - - Tech Stack = Dagger, Retrofit, Room, WorkManager, Navigation, android-upload-service, LiveData, ViewModel - - -- https://github.com/AbduallahAtta/Social-Note - - - 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 - - -- https://github.com/kacperczyk-dev/ExchangeRateApp - - - Exchange Rates application - - - Tech Stack = Dagger, Coroutines, Retrofit, Room, WorkManager, Data Binding, MPAndroidChart, Navigation, LiveData, ViewModel - - -- https://github.com/cuongpm/youtube-dl-android - - - ๐Ÿ“ฆ๐Ÿ“ฆ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 - - -- https://github.com/PhilippeBoisney/ArchApp - - - 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 - - -- https://github.com/rumaan/file.io-Android-Client - - - โ˜๏ธ Unofficial file.io Android App ๐Ÿ“ฑ - - - Tech Stack = Testing, Fuel, Room, WorkManager, Navigation, PermissionsDispatcher, LiveData, ViewModel - - -- https://github.com/skydoves/Pokedex - - - ๐Ÿ—ก๏ธ Android Pokedex using Dagger Hilt, Motion, Coroutines, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture. - - - Tech Stack = Dagger Hilt, Coroutines, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel - - -- https://github.com/Wiqaytna-app/wiqaytna_android - - - Wiqaytna is the official Moroccan exposure notification app. (Covid19) - - - Tech Stack = RxJava, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel - - -- https://github.com/ZahraHeydari/MusicPlayer - - - A Simple Audio Player to play (online/offline) songs by running a service in the background and displaying a notification at top of the screen. - - - Tech Stack = Koin, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel - - -- https://github.com/google/iosched - - - The Google I/O 2019 Android App - - - Tech Stack = Dagger Hilt, Coroutines, Testing, Room, Firestore, Firebase Auth, Firebase Messaging, Firebase Functions, Navigation, ARCore, LiveData, ViewModel - - -- https://github.com/romannurik/muzei - - - Muzei Live Wallpaper for Android - - - Tech Stack = Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel - - -- https://github.com/mozilla-mobile/fenix - - - Firefox Preview - - - Tech Stack = Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel - - -- https://github.com/rumboalla/apkupdater - - - APKUpdater is an open source tool that simplifies the process of finding updates for your installed apps. - - - Tech Stack = Koin, JSoup, Navigation, LiveData, ViewModel - - -- https://github.com/VMadalin/android-modular-architecture - - - ๐Ÿ“š 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 - - -- https://github.com/moezbhatti/qksms - - - The most beautiful SMS messenger for Android - - - Tech Stack = Dagger, Coroutines, RxJava, Testing, Retrofit, Realm, ExoPlayer, Conductor, Data Binding, ShortcutBadger, LiveData, ViewModel - - -- https://github.com/ApturiCOVID/apturicovid-android - - - Apturi Covid Android lietotne - - - Tech Stack = Dagger, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Data Binding, ShortcutBadger, LiveData, ViewModel - - -- https://github.com/idisfkj/AwesomeGithub - - - Android Githubๅฎขๆˆท็ซฏ๏ผŒๅŸบไบŽ็ป„ไปถๅŒ–ๅผ€ๅ‘๏ผŒๆ”ฏๆŒ่ดฆๆˆทๅฏ†็ ไธŽ่ฎค่ฏ็™ป้™†ใ€‚ไฝฟ็”จKotlin่ฏญ่จ€่ฟ›่กŒๅผ€ๅ‘๏ผŒ้กน็›ฎๆžถๆž„ๆ˜ฏๅŸบไบŽJetPack&DataBinding็š„MVVM๏ผ›ๅŒๆ—ถๆ”ฏๆŒ็ป„ไปถๅผ€ๅ‘๏ผŒไฝฟ็”จArouter่ฟ›่กŒ็ป„ไปถ้—ด็š„่ทณ่ฝฌ๏ผ›็ฝ‘็ปœๆก†ๆžถไฝฟ็”จไบ†Retrofit&Coroutineใ€‚้กน็›ฎๆŒ็ปญๆ›ดๆ–ฐไธญ๏ผŒไธบไบ†้˜ฒๆญข่ตฐๅคฑ๏ผŒ่ฏทๅšๅฅฝstartๅ‡†ๅค‡๏ผ๐Ÿ˜Š๐Ÿ˜Š - - - Tech Stack = Coroutines, RxJava, Retrofit, Room, WorkManager, Paging, Navigation, Data Binding, ARouter, LiveData, ViewModel - - -- https://github.com/HabitRPG/habitica-android - - - Native Android app for Habitica - - - Tech Stack = Dagger, Coroutines, RxJava, Retrofit, Realm, Firebase Messaging, Paging, Navigation, Facebook, FlowLayout, LiveData, ViewModel - - - https://github.com/KhaledSherifSayed/PopularPeople - - - Popular People is a sample Android application ๐Ÿ“ฑ showing stars of the world ๐Ÿ‘“ built to demonstrate use of Modern Android development tools. Dedicated to all Android Developers with โค๏ธ. - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Data Binding, Sandwich, LiveData, ViewModel - - - https://github.com/alisonthemonster/Presently - - - Android app for recording gratitude journal entries. - - - Tech Stack = Dagger, Coroutines, RxJava, Testing, Room, Firebase Messaging, WorkManager, Dropbox, Calendar view, Paging, Biometric, LiveData, ViewModel - - - https://github.com/fibelatti/raffler-kotlin - - - Raffler is a simple raffling app which intends to make decision making easier - - - Tech Stack = Dagger, Coroutines, Testing, Room, LiveData, ViewModel - -- https://github.com/sanmiAde/Yet_Another_Anime_List - - Yet Another Anime List is an app that allows you to view upcoming and trending animes on MAL. It also allows you to favourite animes. - - - Tech Stack = Dagger, RxJava, Testing using Fakes, MockWebserver, RxRetrofit, Room, Navigation Components, Lottie, LiveData, ViewModel - -- https://github.com/OMIsie11/CovidNow - - - Simple application for tracking Covid-19 info. Stay safe.๐Ÿ˜ท - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, MPAndroidChart, LiveData, ViewModel - - -- https://github.com/KevinGitonga/TukoNewsClient - - - A simple and sleek Android client consuming the Tuko News Api.. Data is fetched from the official tuko.co.ke news API. - - - Tech Stack = Coroutines, Retrofit, Room, LiveData, ViewModel - -- https://github.com/KevinGitonga/NewsFeed - - - A localized News reader Android app powered by newsapi.org. Will Automatically localize your news based on your location if its supported by API. - - - Tech Stack = Coroutines, Retrofit, Room, Pretty Time, LiveData, ViewModel - -- https://github.com/auron567/Gallerit - - - A sample Android gallery to search images posted on Reddit built using modern Android development tools. - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel - -- https://github.com/enginebai/MovieHunt - - - ๐ŸฟMovie Android App written in Kotlin, MVVM, RxJava, Android Architecture Components. It showcases the app development with well-designed architecture and up-to-date Android tech stacks. - - - Tech Stack = Koin, RxJava, Room, Paging, Navigation, Epoxy, LiveData, ViewModel - -- https://github.com/Shivamdhuria/flows_guide - - - An Android app with Offline first approach, powered by dog.ceo. Build with amazing transition and animations, following material design principles and modern tech stack. - - - Tech Stack = Dagger Hilt, Coroutines, Flows, Retrofit, Room, Material Design Components, Navigation, LiveData, ViewModel - -- https://github.com/rizmaulana/kotlin-mvvm-covid19 - - - ๐Ÿฆ  Simple COVID19 data monitoring worldwide with interactive chart and map - - - Tech Stack = MVVM, Live Data, Koin, RxJava, RxBinding, Offline first with simple caching, Spek2Framwework for Unit Testing, etc - -- https://github.com/Tristankluivert/Knote - - - Knote app is a simple yet standard note taking app with features like image addition, ocr, text to speech and more - - - Tech Stack = ViewModel, Live Data, Koin, Room db, Coroutines etc - - - https://github.com/Devansh-Maurya/PukaPuka - - 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 = MVVM, Kotlin, LiveData, ViewModel, Navigation Components, CameraKit, Firebase ML Kit Text Recognition API, Glide, Volley, Lottie - - - - https://github.com/fionicholas/Football-App - - Football App is an application to show Football Match, List Football Team, and Standing in Leagues from TheSportsDB API - - - Tech Stack = MVVM, Kotlin, LiveData, ViewModel, Retrofit, Room, Koin, RxJava, etc - - -- https://github.com/ryanrvldo/MovieCatalogue - - Movie catalogue is android application that using some architecture components stuff and fetch API from TMDB. This application can show some movie and tv show that available in TMDB API. Also user can search some related stuff here. - - Tech Stack = MVVM, ViewModel, LiveData, Coroutines, Firebase Cloud Messaging, Retrofit, Room, Glide, Dagger Hilt, and Google Material. - - -- https://github.com/mutualmobile/Praxis - - - Sample app written in Kotlin which fetches random jokes and displays it. - - - - Tech Stack = MVVM architecture, Dagger, Retrofit, Kotlin Coroutines, RXJava2, ViewModel, Data Binding - - -- https://github.com/MindorksOpenSource/MVVM-Architecture-Android-Beginners - - - Sample app that implements MVVM architecture using Kotlin. - - - Tech Stack = MVVM architecture, Dagger, Kotlin Coroutines, RXJava2, ViewModel, Data Binding, Live Data. - -- https://github.com/mrcsxsiq/Kotlin-Pokedex - - - Sample app that implements MVVM architecture using Kotlin. - - - Tech Stack = MVVM, Kotlin, LiveData, Navigation Jetpack, ViewModel, Room, Gradle Kotlin DSL, Databinding, Retrofit, Koin and Ktlint - +| Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | +|--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| +| [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 minutes ago | ๐ŸŒŸ 61
๐Ÿด 9
๐Ÿ‘๏ธ 7 | +| [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: 15 minutes ago | ๐ŸŒŸ 4266
๐Ÿด 633
๐Ÿ‘๏ธ 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: 1 hour ago | ๐ŸŒŸ 81
๐Ÿด 35
๐Ÿ‘๏ธ 14 | +| [habitica-android](https://github.com/HabitRPG/habitica-android) | [HabitRPG](https://github.com/HabitRPG) | Native Android app for Habitica

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

Last commit: 1 hour ago | ๐ŸŒŸ 803
๐Ÿด 368
๐Ÿ‘๏ธ 60 | +| [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: 3 hours ago | ๐ŸŒŸ 132
๐Ÿด 21
๐Ÿ‘๏ธ 0 | +| [Updoot](https://github.com/adityam49/Updoot) | [adityam49](https://github.com/adityam49) | A reddit client built for android

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

Last commit: 6 hours ago | ๐ŸŒŸ 10
๐Ÿด 2
๐Ÿ‘๏ธ 3 | +| [Nekome](https://github.com/Chesire/Nekome) | [Chesire](https://github.com/Chesire) | Android application to manage tracked Anime and Manga lists. This is a complete rewrite from the initial application Malime

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

Last commit: 10 hours ago | ๐ŸŒŸ 29
๐Ÿด 8
๐Ÿ‘๏ธ 2 | +| [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: 11 hours ago | ๐ŸŒŸ 54
๐Ÿด 10
๐Ÿ‘๏ธ 1 | +| [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: 20 hours ago | ๐ŸŒŸ 1626
๐Ÿด 529
๐Ÿ‘๏ธ 34 | +| [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: 23 hours ago | ๐ŸŒŸ 22
๐Ÿด 3
๐Ÿ‘๏ธ 6 | +| [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: 1 day ago | ๐ŸŒŸ 3
๐Ÿด 2
๐Ÿ‘๏ธ 0 | +| [Noted-Android](https://github.com/YahiaAngelo/Noted-Android) | [YahiaAngelo](https://github.com/YahiaAngelo) | Noted app for android

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

Last commit: 2 days ago | ๐ŸŒŸ 41
๐Ÿด 6
๐Ÿ‘๏ธ 2 | +| [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

Last commit: 2 days ago | ๐ŸŒŸ 235
๐Ÿด 18
๐Ÿ‘๏ธ 11 | +| [WallPortal](https://github.com/zedlabs/WallPortal) | [zedlabs](https://github.com/zedlabs) | Minimal Wallpapers for Android using Kotlin+MVVM+Hilt+Coroutines+Jetpack(Room, Paging, Navigation)

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

Last commit: 3 days ago | ๐ŸŒŸ 68
๐Ÿด 19
๐Ÿ‘๏ธ 3 | +| [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: 3 days ago | ๐ŸŒŸ 92
๐Ÿด 10
๐Ÿ‘๏ธ 5 | +| [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 days ago | ๐ŸŒŸ 18
๐Ÿด 2
๐Ÿ‘๏ธ 1 | +| [plees-tracker](https://github.com/vmiklos/plees-tracker) | [vmiklos](https://github.com/vmiklos) | Plees Tracker is a simple sleep tracker for your Android phone.

Tech Stack : Room, LiveData, ViewModel

Last commit: 4 days ago | ๐ŸŒŸ 28
๐Ÿด 12
๐Ÿ‘๏ธ 5 | +| [Pokedex](https://github.com/skydoves/Pokedex) | [skydoves](https://github.com/skydoves) | ๐Ÿ—ก๏ธ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture.

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

Last commit: 4 days ago | ๐ŸŒŸ 3439
๐Ÿด 291
๐Ÿ‘๏ธ 211 | +| [wanandroid](https://github.com/jianjunxiao/wanandroid) | [jianjunxiao](https://github.com/jianjunxiao) | Kotlin+JetPack+ๅ็จ‹ๅฎž็Žฐ็š„MVVMๆžถๆž„Wanandroidๅฎขๆˆท็ซฏ

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

Last commit: 5 days ago | ๐ŸŒŸ 163
๐Ÿด 26
๐Ÿ‘๏ธ 5 | +| [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: 6 days ago | ๐ŸŒŸ 183
๐Ÿด 33
๐Ÿ‘๏ธ 8 | +| [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 week ago | ๐ŸŒŸ 144
๐Ÿด 44
๐Ÿ‘๏ธ 10 | +| [muzei](https://github.com/romannurik/muzei) | [romannurik](https://github.com/romannurik) | Muzei Live Wallpaper for Android

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

Last commit: 1 week ago | ๐ŸŒŸ 4114
๐Ÿด 931
๐Ÿ‘๏ธ 191 | +| [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: 1 week ago | ๐ŸŒŸ 912
๐Ÿด 175
๐Ÿ‘๏ธ 15 | +| [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: 1 week ago | ๐ŸŒŸ 26
๐Ÿด 4
๐Ÿ‘๏ธ 10 | +| [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: 1 week ago | ๐ŸŒŸ 10
๐Ÿด 3
๐Ÿ‘๏ธ 1 | +| [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: 2 weeks ago | ๐ŸŒŸ 184
๐Ÿด 20
๐Ÿ‘๏ธ 7 | +| [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: 2 weeks ago | ๐ŸŒŸ 20
๐Ÿด 2
๐Ÿ‘๏ธ 2 | +| [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: 2 weeks ago | ๐ŸŒŸ 369
๐Ÿด 72
๐Ÿ‘๏ธ 15 | +| [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: 2 weeks ago | ๐ŸŒŸ 70
๐Ÿด 10
๐Ÿ‘๏ธ 3 | +| [vocable-android](https://github.com/willowtreeapps/vocable-android) | [willowtreeapps](https://github.com/willowtreeapps) | Vocable for Android

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

Last commit: 2 weeks ago | ๐ŸŒŸ 78
๐Ÿด 5
๐Ÿ‘๏ธ 54 | +| [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: 2 weeks ago | ๐ŸŒŸ 1
๐Ÿด 1
๐Ÿ‘๏ธ 1 | +| [flexbooru](https://github.com/flexbooru/flexbooru) | [flexbooru](https://github.com/flexbooru) | A booru client for Android, support Danbooru, Moebooru, Gelbooru, Sankaku, etc.

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

Last commit: 2 weeks ago | ๐ŸŒŸ 359
๐Ÿด 39
๐Ÿ‘๏ธ 20 | +| [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: 2 weeks ago | ๐ŸŒŸ 531
๐Ÿด 64
๐Ÿ‘๏ธ 15 | +| [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: 2 weeks ago | ๐ŸŒŸ 25
๐Ÿด 6
๐Ÿ‘๏ธ 1 | +| [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: 3 weeks ago | ๐ŸŒŸ 39
๐Ÿด 7
๐Ÿ‘๏ธ 2 | +| [Presently](https://github.com/alisonthemonster/Presently) | [alisonthemonster](https://github.com/alisonthemonster) | Android app for recording gratitude journal entries [IN PROGRESS]

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

Last commit: 3 weeks ago | ๐ŸŒŸ 78
๐Ÿด 30
๐Ÿ‘๏ธ 6 | +| [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: 3 weeks ago | ๐ŸŒŸ 26
๐Ÿด 2
๐Ÿ‘๏ธ 2 | +| [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: 3 weeks ago | ๐ŸŒŸ 59
๐Ÿด 12
๐Ÿ‘๏ธ 5 | +| [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 | ๐ŸŒŸ 143
๐Ÿด 17
๐Ÿ‘๏ธ 10 | +| [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: 3 weeks ago | ๐ŸŒŸ 1534
๐Ÿด 230
๐Ÿ‘๏ธ 80 | +| [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: 1 month ago | ๐ŸŒŸ 31
๐Ÿด 5
๐Ÿ‘๏ธ 2 | +| [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: 1 month ago | ๐ŸŒŸ 4
๐Ÿด 5
๐Ÿ‘๏ธ 0 | +| [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: 1 month ago | ๐ŸŒŸ 138
๐Ÿด 17
๐Ÿ‘๏ธ 7 | +| [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: 1 month ago | ๐ŸŒŸ 3008
๐Ÿด 886
๐Ÿ‘๏ธ 127 | +| [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 : MVVM, Kotlin, LiveData, ViewModel, Navigation Components, CameraKit, Firebase ML Kit Text Recognition API, Glide, Volley, Lottie

Last commit: 1 month ago | ๐ŸŒŸ 6
๐Ÿด 0
๐Ÿ‘๏ธ 1 | +| [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 : MVVM, Kotlin, LiveData, ViewModel, Retrofit, Room, Koin, RxJava, etc

Last commit: 1 month ago | ๐ŸŒŸ 11
๐Ÿด 3
๐Ÿ‘๏ธ 1 | +| [feedapp](https://github.com/dievskiy/feedapp) | [dievskiy](https://github.com/dievskiy) | Calorie tracker for android that supports recipes and products search.

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

Last commit: 1 month ago | ๐ŸŒŸ 16
๐Ÿด 5
๐Ÿ‘๏ธ 1 | +| [MovieCatalogue](https://github.com/ryanrvldo/MovieCatalogue) | [ryanrvldo](https://github.com/ryanrvldo) |

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

Last commit: 1 month ago | ๐ŸŒŸ 0
๐Ÿด 0
๐Ÿ‘๏ธ 1 | +| [iosched](https://github.com/google/iosched) | [google](https://github.com/google) | The Google I/O 2019 Android App

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

Last commit: 2 months ago | ๐ŸŒŸ 20205
๐Ÿด 6106
๐Ÿ‘๏ธ 1530 | +| [Knote](https://github.com/Tristankluivert/Knote) | [Tristankluivert](https://github.com/Tristankluivert) | Knote is a standard note taking app

Tech Stack : ViewModel, Live Data, Koin, Room db, Coroutines etc

Last commit: 2 months ago | ๐ŸŒŸ 2
๐Ÿด 0
๐Ÿ‘๏ธ 1 | +| [topcorn](https://github.com/theapache64/topcorn) | [theapache64](https://github.com/theapache64) | A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with latest hot-trending Android development tools.

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

Last commit: 2 months ago | ๐ŸŒŸ 101
๐Ÿด 12
๐Ÿ‘๏ธ 8 | +| [TvFlix](https://github.com/reactivedroid/TvFlix) | [reactivedroid](https://github.com/reactivedroid) | TvFlix android app using Dagger Hilt, Coroutines, Jetpack(Room, ViewModel, Paging, LiveData) based on MVVM architecture purely written in Kotlin

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

Last commit: 2 months ago | ๐ŸŒŸ 234
๐Ÿด 42
๐Ÿ‘๏ธ 10 | +| [Foodium](https://github.com/PatilShreyas/Foodium) | [PatilShreyas](https://github.com/PatilShreyas) | ๐ŸฒFoodium is a sample food blog Android application ๐Ÿ“ฑ built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Dagger 2/Hilt, Architecture Components, MVVM, Room, Retrofit, Moshi, Material Components).

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

Last commit: 2 months ago | ๐ŸŒŸ 1531
๐Ÿด 231
๐Ÿ‘๏ธ 52 | +| [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: 2 months ago | ๐ŸŒŸ 118
๐Ÿด 23
๐Ÿ‘๏ธ 2 | +| [Instant-Weather](https://github.com/mayokunthefirst/Instant-Weather) | [mayokunthefirst](https://github.com/mayokunthefirst) | An Android weather application implemented using the MVVM pattern, Retrofit2, 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: 2 months ago | ๐ŸŒŸ 399
๐Ÿด 63
๐Ÿ‘๏ธ 20 | +| [MVVM-Architecture](https://github.com/qingmei2/MVVM-Architecture) | [qingmei2](https://github.com/qingmei2) | The practice of MVVM + Jetpack architecture in Android.

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

Last commit: 2 months ago | ๐ŸŒŸ 1335
๐Ÿด 210
๐Ÿ‘๏ธ 43 | +| [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: 2 months ago | ๐ŸŒŸ 54
๐Ÿด 11
๐Ÿ‘๏ธ 4 | +| [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 : MVVM, Live Data, Koin, RxJava, RxBinding, Offline first with simple caching, Spek2Framwework for Unit Testing, etc

Last commit: 3 months ago | ๐ŸŒŸ 335
๐Ÿด 107
๐Ÿ‘๏ธ 12 | +| [Gallerit](https://github.com/auron567/Gallerit) | [auron567](https://github.com/auron567) | A sample Android gallery to search images posted on Reddit built using modern Android development tools (Architecture Components, MVVM, Coroutines, Flow, Navigation, Retrofit, Room, Koin)

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

Last commit: 3 months ago | ๐ŸŒŸ 104
๐Ÿด 4
๐Ÿ‘๏ธ 2 | +| [AwesomeGithub](https://github.com/idisfkj/AwesomeGithub) | [idisfkj](https://github.com/idisfkj) | ๐Ÿ”ฅAndroid Githubๅฎขๆˆท็ซฏ๏ผŒๅŸบไบŽ็ป„ไปถๅŒ–ๅผ€ๅ‘๏ผŒๆ”ฏๆŒ่ดฆๆˆทๅฏ†็ ไธŽ่ฎค่ฏ็™ป้™†ใ€‚ไฝฟ็”จKotlin่ฏญ่จ€่ฟ›่กŒๅผ€ๅ‘๏ผŒ้กน็›ฎๆžถๆž„ๆ˜ฏๅŸบไบŽJetPack&DataBinding็š„MVVM๏ผ›้กน็›ฎไธญไฝฟ็”จไบ†Arouterใ€Retrofitใ€Coroutineใ€Glideใ€DaggerไธŽHilt็ญ‰ๆต่กŒๅผ€ๆบๆŠ€ๆœฏใ€‚

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

Last commit: 3 months ago | ๐ŸŒŸ 97
๐Ÿด 8
๐Ÿ‘๏ธ 3 | +| [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: 3 months ago | ๐ŸŒŸ 42
๐Ÿด 2
๐Ÿ‘๏ธ 3 | +| [CovidNow](https://github.com/OMIsie11/CovidNow) | [OMIsie11](https://github.com/OMIsie11) | Simple application for tracking Covid-19 info. Stay safe.๐Ÿ˜ท

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

Last commit: 3 months ago | ๐ŸŒŸ 17
๐Ÿด 5
๐Ÿ‘๏ธ 1 | +| [Covid-19-Tracker](https://github.com/HariKulhari06/Covid-19-Tracker) | [HariKulhari06](https://github.com/HariKulhari06) | A Sample to track COVID-19 cases in India and globally.

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

Last commit: 3 months ago | ๐ŸŒŸ 49
๐Ÿด 16
๐Ÿ‘๏ธ 2 | +| [BitfinexClient](https://github.com/gs-ts/BitfinexClient) | [gs-ts](https://github.com/gs-ts) | An Android app written in Kotlin that demonstrates a clean architecture with MVVM, websockets using WebScoket client Scarlet, and RxAndroid/RxKotlin.

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

Last commit: 3 months ago | ๐ŸŒŸ 8
๐Ÿด 2
๐Ÿ‘๏ธ 1 | +| [LetsChat](https://github.com/satyamurti/LetsChat) | [satyamurti](https://github.com/satyamurti) | ๐Ÿ‡ฎ๐Ÿ‡ณ Open source Indian Chat application with new cool concepts.

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

Last commit: 3 months ago | ๐ŸŒŸ 48
๐Ÿด 12
๐Ÿ‘๏ธ 6 | +| [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: 4 months ago | ๐ŸŒŸ 6
๐Ÿด 1
๐Ÿ‘๏ธ 2 | +| [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: 4 months ago | ๐ŸŒŸ 16
๐Ÿด 4
๐Ÿ‘๏ธ 2 | +| [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 : MVVM architecture, Dagger, Retrofit, Kotlin Coroutines, RXJava2, ViewModel, Data Binding

Last commit: 4 months ago | ๐ŸŒŸ 53
๐Ÿด 9
๐Ÿ‘๏ธ 6 | +| [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: 4 months ago | ๐ŸŒŸ 0
๐Ÿด 0
๐Ÿ‘๏ธ 0 | +| [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 : MVVM, Kotlin, LiveData, Navigation Jetpack, ViewModel, Room, Gradle Kotlin DSL, Databinding, Retrofit, Koin and Ktlint

Last commit: 4 months ago | ๐ŸŒŸ 1086
๐Ÿด 141
๐Ÿ‘๏ธ 26 | +| [apkupdater](https://github.com/rumboalla/apkupdater) | [rumboalla](https://github.com/rumboalla) | APKUpdater is an open source tool that simplifies the process of finding updates for your installed apps.

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

Last commit: 4 months ago | ๐ŸŒŸ 912
๐Ÿด 120
๐Ÿ‘๏ธ 67 | +| [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: 4 months ago | ๐ŸŒŸ 17
๐Ÿด 3
๐Ÿ‘๏ธ 2 | +| [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: 4 months ago | ๐ŸŒŸ 9
๐Ÿด 3
๐Ÿ‘๏ธ 2 | +| [Replify-Messenger](https://github.com/vidit135g/Replify-Messenger) | [vidit135g](https://github.com/vidit135g) | Minimal text messenger with a ton of features.

Tech Stack : Dagger, Coroutines, RxJava, Testing, Realm, ExoPlayer, Conductor, Mixpanel Android, libphonenumber-android, Call Control DataShare, LiveData, ViewModel

Last commit: 4 months ago | ๐ŸŒŸ 19
๐Ÿด 4
๐Ÿ‘๏ธ 2 | +| [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: 4 months ago | ๐ŸŒŸ 26
๐Ÿด 9
๐Ÿ‘๏ธ 1 | +| [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: 4 months ago | ๐ŸŒŸ 7
๐Ÿด 3
๐Ÿ‘๏ธ 1 | +| [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: 5 months ago | ๐ŸŒŸ 776
๐Ÿด 198
๐Ÿ‘๏ธ 26 | +| [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: 5 months ago | ๐ŸŒŸ 163
๐Ÿด 74
๐Ÿ‘๏ธ 27 | +| [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 : Kotlin, LiveData, ViewModel

Last commit: 5 months ago | ๐ŸŒŸ 68
๐Ÿด 12
๐Ÿ‘๏ธ 6 | +| [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: 5 months ago | ๐ŸŒŸ 520
๐Ÿด 86
๐Ÿ‘๏ธ 17 | +| [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: 5 months ago | ๐ŸŒŸ 326
๐Ÿด 43
๐Ÿ‘๏ธ 9 | +| [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: 6 months ago | ๐ŸŒŸ 4
๐Ÿด 0
๐Ÿ‘๏ธ 1 | +| [libbra](https://github.com/nuhkoca/libbra) | [nuhkoca](https://github.com/nuhkoca) | A currency tracker app demonstration.

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

Last commit: 6 months ago | ๐ŸŒŸ 26
๐Ÿด 4
๐Ÿ‘๏ธ 3 | +| [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 : MVVM architecture, Dagger, Kotlin Coroutines, RXJava2, ViewModel, Data Binding, Live Data.

Last commit: 6 months ago | ๐ŸŒŸ 133
๐Ÿด 42
๐Ÿ‘๏ธ 8 | +| [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: 6 months ago | ๐ŸŒŸ 5
๐Ÿด 0
๐Ÿ‘๏ธ 0 | +| [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: 7 months ago | ๐ŸŒŸ 261
๐Ÿด 52
๐Ÿ‘๏ธ 15 | +| [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: 8 months ago | ๐ŸŒŸ 515
๐Ÿด 93
๐Ÿ‘๏ธ 16 | +| [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: 8 months ago | ๐ŸŒŸ 8
๐Ÿด 2
๐Ÿ‘๏ธ 1 | +| [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: 9 months ago | ๐ŸŒŸ 35
๐Ÿด 3
๐Ÿ‘๏ธ 2 | +| [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: 9 months ago | ๐ŸŒŸ 7
๐Ÿด 3
๐Ÿ‘๏ธ 1 | +| [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: 11 months ago | ๐ŸŒŸ 7
๐Ÿด 4
๐Ÿ‘๏ธ 2 | +| [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: 11 months ago | ๐ŸŒŸ 270
๐Ÿด 61
๐Ÿ‘๏ธ 17 | +| [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: 12 months ago | ๐ŸŒŸ 74
๐Ÿด 23
๐Ÿ‘๏ธ 12 | +| [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: 1 year ago | ๐ŸŒŸ 34
๐Ÿด 7
๐Ÿ‘๏ธ 3 | +| [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: 1 year ago | ๐ŸŒŸ 0
๐Ÿด 1
๐Ÿ‘๏ธ 1 | +| [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: 1 year ago | ๐ŸŒŸ 281
๐Ÿด 100
๐Ÿ‘๏ธ 20 | +| [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 | ๐ŸŒŸ 15
๐Ÿด 11
๐Ÿ‘๏ธ 2 | #### Clean Architecture -- https://github.com/happysingh23828/Android-Clean-Architecture - - - This is a sample movie list Android application ๐Ÿ“ฑ built to demonstrate use of [**Clean Architecture**](https://github.com/happysingh23828/Android-Clean-Architecture#what-is-clean-architecture) tools with [**80% code coverage**](https://github.com/happysingh23828/Android-Clean-Architecture#--code-coverage-reports). Dedicated to all Android Developers with โค๏ธ. - - - Tech Stack = Dagger, Unit Testing for modules, Mockito, RxJava, Retrofit, Room, CI-CD, SOLID, Code Coverage, Jacoco, Detekt, ktlint, Stetho, LiveData, ViewModel - - -- https://github.com/igorwojda/android-showcase - - - ๐Ÿ’Ž Android application following best practices: Kotlin, coroutines, Clean Architecture, feature modules, tests, MVVM, static analysis... - - - Tech Stack = Kodein, Coroutines, Testing, Retrofit, KAndroid, Lottie, Detekt, Navigation, Dynamic Feature Modules, LiveData, ViewModel - - -- https://github.com/ferPrieto/Coroutines-Flows-Modularised - - - Clean Architecture Modular Project. - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel - +| Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | +|--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| +| [android-clean-architecture](https://github.com/sansets/android-clean-architecture) | [sansets](https://github.com/sansets) | Sample for Android Clean Architecture.

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

Last commit: 2 weeks ago | ๐ŸŒŸ 41
๐Ÿด 2
๐Ÿ‘๏ธ 1 | +| [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, Live Data, View Model, Work Manager, Material Components

Last commit: 3 weeks ago | ๐ŸŒŸ 332
๐Ÿด 33
๐Ÿ‘๏ธ 6 | +| [android-showcase](https://github.com/igorwojda/android-showcase) | [igorwojda](https://github.com/igorwojda) | ๐Ÿ’Ž Android application following best practices: Kotlin, coroutines, Clean Architecture, feature modules, tests, MVVM, static analysis...

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

Last commit: 3 weeks ago | ๐ŸŒŸ 4046
๐Ÿด 515
๐Ÿ‘๏ธ 142 | +| [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 weeks ago | ๐ŸŒŸ 81
๐Ÿด 13
๐Ÿ‘๏ธ 5 | +| [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: 1 month ago | ๐ŸŒŸ 74
๐Ÿด 8
๐Ÿ‘๏ธ 4 | +| [Clean-MVVM-ArchComponents](https://github.com/odaridavid/Clean-MVVM-ArchComponents) | [odaridavid](https://github.com/odaridavid) | ๐Ÿ‘ฝ Android app consuming Star Wars API.Built with clean architecture ,MVVM pattern, Koin , Coroutines + Flows ,Architecture Components, Data Binding , Firebase , Unit/UI Tests ,Motion Layout

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

Last commit: 2 months ago | ๐ŸŒŸ 200
๐Ÿด 45
๐Ÿ‘๏ธ 10 | +| [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: 2 months ago | ๐ŸŒŸ 10
๐Ÿด 0
๐Ÿ‘๏ธ 1 | +| [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: 3 months ago | ๐ŸŒŸ 57
๐Ÿด 11
๐Ÿ‘๏ธ 5 | +| [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: 4 months ago | ๐ŸŒŸ 143
๐Ÿด 9
๐Ÿ‘๏ธ 9 | +| [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: 8 months ago | ๐ŸŒŸ 569
๐Ÿด 94
๐Ÿ‘๏ธ 25 | -- https://github.com/akoufa/CoolWeather - - - 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 - -- https://github.com/odaridavid/Clean-MVVM-ArchComponents - - - A Star Wars API app that lets you search for characters, view details about them and save your favorite - characters. - - - Tech Stack = Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Motion Layout, LiveData, ViewModel - -- https://github.com/andremion/Theatre - - - Pet project using Clean Architecture + MVVM + Reactive Extensions + Android Architecture Components. The data are fetched from LondonTheatreDirect API. performing_arts - - - Tech Stack = Dagger, RxJava, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel - -- https://github.com/HamdiBoumaiza/CoronavirusWorldStatus - - - An Android App that shows the stats of coronavirus worldwide and per country . - - - Tech Stack = Dagger, Coroutines, Retrofit, Room, LiveData, ViewModel , Stetho - -- https://github.com/SmartToolFactory/PropertyFindAR - - - ๐Ÿ˜ Real Estate App with many screens written with RxJava3+Flow with offline first/last using dynamic feature modules, and TDD, used ConcatAdapter to have RV with different layouts. - - - 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 - -- https://github.com/sansets/android-clean-architecture - - - Food recipe app that uses Modularization, Single Activity Architecture, and Clean Architecture. - - - Tech Stack = Navigation Component, Dagger, Coroutines Flow, Room, Retrofit, LiveData, ViewModel, View Binding, Dynamic Feature Modules. - -- https://github.com/VladimirWrites/BLTaxi - - - ๐Ÿš• BL Taxi is a simple app for calling a taxi in the city Banja Luka built using modern Android development tools (Clean Architecture, Kotlin, Coroutines, MVVM, Testing) - - - Tech Stack = Koin, Retrofit, Room, Data Binding, Live Data, View Model, Work Manager, Material Components - ### MVI #### Normal -- https://github.com/HadySalhab/NewsFeed-MVI-Dagger - - - NewsFeed, provides live top and breaking headlines for a country, specific category in a country, single source, or multiple sources, by interacting to News API. - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel - - -- https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack - - - โšก๏ธComic reader app ๐Ÿ“˜. Learning MVVM / MVI with ๐ŸŒ€ RxKotlin, Retrofit, Kotlin Coroutine, Work Manager, Room, Firebase ... โ„๏ธ - - - Tech Stack = Koin, Coroutines, RxJava, Retrofit, Room, Firestore, Firebase Auth, Firebase Storage, WorkManager, Navigation, Paging, LiveData, ViewModel - - -- https://github.com/R4md4c/GameDealz - - - A non-official Android client for IsThereAnyDeal.com, it uses its API to retrieve/search for deals and compare prices. - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, acra, fastAdapter, Paging, JSoup, dropbox/Store, LiveData, ViewModel - - -- https://github.com/mitchtabian/Open-API-Android-App - - - Application that interacts with the website open-api.xyz. - - - Tech Stack = Dagger, Coroutines, Retrofit, Room, Navigation, LiveData, ViewModel +| Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | +|--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| +| [GameDealz](https://github.com/R4md4c/GameDealz) | [R4md4c](https://github.com/R4md4c) | A non-official Android client for IsThereAnyDeal.com

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

Last commit: 1 month ago | ๐ŸŒŸ 22
๐Ÿด 2
๐Ÿ‘๏ธ 5 | +| [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, Kotlin Coroutine, Work Manager, Room, Firebase, AndroidX Startup, Clean Architecture ... โ„๏ธ

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

Last commit: 1 month ago | ๐ŸŒŸ 47
๐Ÿด 10
๐Ÿ‘๏ธ 4 | +| [Open-API-Android-App](https://github.com/mitchtabian/Open-API-Android-App) | [mitchtabian](https://github.com/mitchtabian) | Kotlin, MVI Architecture, Dagger2, Retrofit2, Coroutines, Room Persistence, REST API, Token Authentication

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

Last commit: 5 months ago | ๐ŸŒŸ 278
๐Ÿด 139
๐Ÿ‘๏ธ 23 | +| [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: 8 months ago | ๐ŸŒŸ 9
๐Ÿด 5
๐Ÿ‘๏ธ 1 | #### Clean Architecture -- https://github.com/lopspower/CleanRxArchitecture - - - Clean Rx Kotlin Architecture sample on GitHub Api ๐Ÿš€ - - - Tech Stack = Dagger, RxJava, Retrofit, Room, Clean Architecture, LiveData, ViewModel - - -- https://github.com/mitchtabian/Clean-Notes - - - Android example with Clean Architecture by layer. - - - Tech Stack = Dagger, Coroutines, Testing, Retrofit, Room, Firestore, Firebase Auth, Navigation, Markdown Processor, LiveData, ViewModel - - -- https://github.com/Ezike/Baking-App-Kotlin - - - Android MVI clean architecture sample that shows a list of recipes, their ingredients and hands-on videos for making them. - - - Tech Stack = Dagger hilt, Kotlin Coroutines & StateFlow, Unit Testing, Retrofit, DFM Navigation, FlowBinding, Exoplayer - - -- https://github.com/Ezike/MVI_UIComponents - - - Android project showcasing the use of View components for rendering UI. - - - Tech Stack = Jetpack, Dagger hilt, Kotlin Coroutines & StateFlow, Room, Retrofit, FlowBinding - +| Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | +|--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| +| [MVI_UIComponents](https://github.com/Ezike/MVI_UIComponents) | [Ezike](https://github.com/Ezike) | 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, DFM Navigation, and kotlin coroutines with StateFlow

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

Last commit: 4 days ago | ๐ŸŒŸ 50
๐Ÿด 4
๐Ÿ‘๏ธ 3 | +| [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, Kotlin Coroutines & StateFlow, Unit Testing, Retrofit, DFM Navigation, FlowBinding, Exoplayer

Last commit: 3 months ago | ๐ŸŒŸ 148
๐Ÿด 37
๐Ÿ‘๏ธ 6 | +| [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: 5 months ago | ๐ŸŒŸ 277
๐Ÿด 27
๐Ÿ‘๏ธ 14 | +| [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: 5 months ago | ๐ŸŒŸ 189
๐Ÿด 52
๐Ÿ‘๏ธ 9 | ### MVP -- https://github.com/inorichi/tachiyomi - - - Tachiyomi is a free and open source manga reader for Android 5.0 and above. - - - Tech Stack = Inorichi injekt, Coroutines, RxJava, Testing, Retrofit, DiskLruCache, Jsoup, WorkManager, Duktape Android, Conductor - -- https://github.com/ImangazalievM/UTair-MVP-Sample - - - 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) - +| Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | +|--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| +| [tachiyomi](https://github.com/inorichi/tachiyomi) | [inorichi](https://github.com/inorichi) | Free and open source manga reader for Android

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

Last commit: 1 hour ago | ๐ŸŒŸ 8978
๐Ÿด 1183
๐Ÿ‘๏ธ 431 | +| [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: 2 months ago | ๐ŸŒŸ 25
๐Ÿด 1
๐Ÿ‘๏ธ 3 | ## Other -- https://github.com/Shyguy99/Insider - - - An app to hide text data in a image implementing Steganography with AES algorithm - - - Tech Stack = Kotlin - -- https://github.com/DimaBrody/Screenaway - - - Phone Screen Forced Locker - - - Tech Stack = Room, Play Install Referrer Library - -- https://github.com/shadowsocks/shadowsocks-android - - - A shadowsocks client for Android - - - Tech Stack = Testing, Room, Firebase Ads, WorkManager - - -- https://github.com/BijoySingh/Scarlet-Notes - - - 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 - - +| Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | +|--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| +| [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 days ago | ๐ŸŒŸ 30520
๐Ÿด 11289
๐Ÿ‘๏ธ 1653 | +| [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: 1 month ago | ๐ŸŒŸ 275
๐Ÿด 89
๐Ÿ‘๏ธ 18 | +| [Screenaway](https://github.com/DimaBrody/Screenaway) | [DimaBrody](https://github.com/DimaBrody) | Phone Screen Forced Locker

Tech Stack : Room, Play Install Referrer Library

Last commit: 2 months ago | ๐ŸŒŸ 8
๐Ÿด 1
๐Ÿ‘๏ธ 1 | ## :books: Tech Stack/Libraries @@ -943,9 +219,9 @@ ## :memo: Contributing -See [contributing.md](contributing.md) +See [contributing.md](CONTRIBUTING.md) -## :lotus_position_woman: Contributors +## Contributors Contributors are cool people. @@ -1010,8 +286,6 @@ If you contributed and are missing in this list, please send a PR including your - - ## :computer: Find us on

diff --git a/README.model.md b/README.model.md new file mode 100644 index 00000000..fc59ba17 --- /dev/null +++ b/README.model.md @@ -0,0 +1,167 @@ + +

Awesome Android Kotlin Apps


+ +

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

+
+ +

+ Awesome Android Kotlin Apps Count badge + Android Language Badge + Kotlin Language Badge + androiddevnotes GitHub badge + +

+ +
+

+androiddevnotes logo +


+ + +**Awesome Android Kotlin Apps** aims to be the starting point for developers to find an Android app with a particular Tech Stack / Libraries. + +___๐Ÿ”ƒ Last updated : $LAST_UPDATED___ + +## Contents + +:art: [**Pattern**](https://github.com/androiddevnotes/awesome-android-kotlin-apps#art-pattern) + + +- [Jetpack Compose Apps](https://github.com/androiddevnotes/awesome-android-kotlin-apps#jetpack-compose-apps) + +- [Model View ViewModel (MVVM)](https://github.com/androiddevnotes/awesome-android-kotlin-apps#mvvm) + + - [Normal](https://github.com/androiddevnotes/awesome-android-kotlin-apps#normal) + - [Clean Architecture](https://github.com/androiddevnotes/awesome-android-kotlin-apps#clean-architecture) + +- [Model View Intent (MVI)](https://github.com/androiddevnotes/awesome-android-kotlin-apps#mvi) + + - [Normal](https://github.com/androiddevnotes/awesome-android-kotlin-apps#normal-1) + - [Clean Architecture](https://github.com/androiddevnotes/awesome-android-kotlin-apps#clean-architecture-1) + +- [Model View Presenter (MVP)](https://github.com/androiddevnotes/awesome-android-kotlin-apps#mvp) + +- [Model View Controller (MVC) and Other Patterns](https://github.com/androiddevnotes/awesome-android-kotlin-apps#other) + + +:books: [**Tech Stack/Libraries**](https://github.com/androiddevnotes/awesome-android-kotlin-apps#books-tech-stacklibraries) + +:memo: [**Contributing**](https://github.com/androiddevnotes/awesome-android-kotlin-apps#memo-contributing) + + +## :art: Pattern + +### Jetpack Compose Apps + +$JETPACK_COMPOSE_REPOS + +### MVVM + +#### Normal + +$MVVM_NORMAL_REPOS + +#### Clean Architecture + +$MVVM_CLEAN_ARCH_REPOS + +### MVI + +#### Normal + +$MVI_NORMAL_REPOS + +#### Clean Architecture + +$MVI_CLEAN_ARCH_REPOS + +### MVP + +$MVP_REPOS + +## Other + +$OTHER_REPOS + +## :books: Tech Stack/Libraries + +- [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) + +## :memo: Contributing + +See [contributing.md](CONTRIBUTING.md) + +## Contributors + +Contributors are cool people. + +If you contributed and are missing in this list, please send a PR including your entry in the list below! ๐Ÿฃ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KevinGitongaHamdiBoumaizaDevansh-MauryaAnnie-Sultanaiamsurajgiri
saifali25Tristankluivertanacoimbragalpharomeo911adityakamath16
ImangazalievMEzikeviveksharma2382000sridevshenoysatyamurti
sansetssanmiAdesaif71ryanrvldorizmaulana
pedrofsnodaridavidihilalahmadigorescodrohappysingh23828
fionicholasenginebaidheerajkotwaniauron567abhinav0612
YahiaAngeloVladimirWritesSpikeysanjuSmartToolFactoryShivamdhuria
PatilShreyasPHELATMargu86MageshVSKhaledSherifSayed
+ +## :computer: Find us on + +
+ GitHub / Discord / Twitter / Instagram / YouTube / Medium +

+ androiddevnotes logo +
diff --git a/awesome-android-kotlin-apps.main.jar b/awesome-android-kotlin-apps.main.jar new file mode 100644 index 00000000..3385525b Binary files /dev/null and b/awesome-android-kotlin-apps.main.jar differ diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..778e2dc8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,53 @@ +plugins { + id 'java' + id 'org.jetbrains.kotlin.jvm' version '1.3.72' +} +apply plugin: 'kotlin-kapt' + + +group 'com.github' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" + testCompile group: 'junit', name: 'junit', version: '4.12' + + // Moshi:A modern JSON API for Android and Java + implementation 'com.squareup.moshi:moshi:1.11.0' + + // Moshi Kotlin Codegen:A modern JSON API for Android and Java + kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.11.0' + + // OkHttp:Squareโ€™s meticulous HTTP client for Java and Kotlin. + implementation 'com.squareup.okhttp3:okhttp:4.10.0-RC1' + + // Retrofit:A type-safe HTTP client for Android and Java. + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + + // Dagger + api 'com.google.dagger:dagger:2.27' + kapt 'com.google.dagger:dagger-compiler:2.27' + + // Kotlinx Coroutines Core:Coroutines support libraries for Kotlin + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + + // Converter: Moshi:A Retrofit Converter which uses Moshi for serialization. + implementation 'com.squareup.retrofit2:converter-moshi:2.9.0' + + // OkHttp Logging Interceptor:Squareโ€™s meticulous HTTP client for Java and Kotlin. + implementation 'com.squareup.okhttp3:logging-interceptor:4.10.0-RC1' + + // PrettyTime Core:PrettyTime Core + implementation 'org.ocpsoft.prettytime:prettytime:4.0.6.Final' +} + +compileKotlin { + kotlinOptions.jvmTarget = "1.8" +} +compileTestKotlin { + kotlinOptions.jvmTarget = "1.8" +} \ No newline at end of file diff --git a/gpm.json b/gpm.json new file mode 100644 index 00000000..a15a8d58 --- /dev/null +++ b/gpm.json @@ -0,0 +1,144 @@ +{ + "added": [ + { + "id": 1, + "type": "implementation", + "installed_name": "moshi", + "gpm_dep": { + "artifact_id": "moshi", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/com.squareup.moshi/moshi", + "get_from": "Central", + "group_id": "com.squareup.moshi", + "name": "Moshi", + "description": "A modern JSON API for Android and Java" + } + }, + { + "id": 2, + "type": "kapt", + "installed_name": "moshi-codegen", + "gpm_dep": { + "artifact_id": "moshi-kotlin-codegen", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/com.squareup.moshi/moshi-kotlin-codegen", + "get_from": "Central", + "group_id": "com.squareup.moshi", + "name": "Moshi Kotlin Codegen", + "description": "A modern JSON API for Android and Java" + } + }, + { + "id": 3, + "type": "implementation", + "installed_name": "egit-github", + "gpm_dep": { + "artifact_id": "org.eclipse.egit.github.core", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/org.eclipse.mylyn.github/org.eclipse.egit.github.core", + "get_from": "Central", + "group_id": "org.eclipse.mylyn.github", + "name": "Eclipse EGit GitHub API Core", + "description": "Eclipse EGit GitHub API Core" + } + }, + { + "id": 4, + "type": "implementation", + "installed_name": "okhttp", + "gpm_dep": { + "artifact_id": "okhttp", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp", + "get_from": "Central", + "group_id": "com.squareup.okhttp3", + "name": "OkHttp", + "description": "Squareโ€™s meticulous HTTP client for Java and Kotlin." + } + }, + { + "id": 5, + "type": "implementation", + "installed_name": "json", + "gpm_dep": { + "artifact_id": "json", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/org.json/json", + "get_from": "Central", + "group_id": "org.json", + "name": "JSON In Java", + "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 ..." + } + }, + { + "id": 6, + "type": "implementation", + "installed_name": "retrofit2", + "gpm_dep": { + "artifact_id": "retrofit", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit", + "get_from": "Central", + "group_id": "com.squareup.retrofit2", + "name": "Retrofit", + "description": "A type-safe HTTP client for Android and Java." + } + }, + { + "id": 7, + "type": "implementation", + "installed_name": "coroutines", + "gpm_dep": { + "artifact_id": "kotlinx-coroutines-core", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core", + "get_from": "Central", + "group_id": "org.jetbrains.kotlinx", + "name": "Kotlinx Coroutines Core", + "description": "Coroutines support libraries for Kotlin" + } + }, + { + "id": 8, + "type": "implementation", + "installed_name": "moshi-converter", + "gpm_dep": { + "artifact_id": "converter-moshi", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/com.squareup.retrofit2/converter-moshi", + "get_from": "Central", + "group_id": "com.squareup.retrofit2", + "name": "Converter: Moshi", + "description": "A Retrofit Converter which uses Moshi for serialization." + } + }, + { + "id": 9, + "type": "implementation", + "installed_name": "okhttp3-logging", + "gpm_dep": { + "artifact_id": "logging-interceptor", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/com.squareup.okhttp3/logging-interceptor", + "get_from": "Central", + "group_id": "com.squareup.okhttp3", + "name": "OkHttp Logging Interceptor", + "description": "Squareโ€™s meticulous HTTP client for Java and Kotlin." + } + }, + { + "id": 10, + "type": "implementation", + "installed_name": "prettytime", + "gpm_dep": { + "artifact_id": "prettytime", + "default_type": "implementation", + "docs": "https://mvnrepository.com/artifact/org.ocpsoft.prettytime/prettytime", + "get_from": "Central", + "group_id": "org.ocpsoft.prettytime", + "name": "PrettyTime Core", + "description": "PrettyTime Core" + } + } + ] +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..97b0774f --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +kotlin.code.style=official +kotlin.code.style=official \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..62d4c053 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..33b3d27b --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Nov 06 14:36:08 IST 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100755 index 00000000..fbd7c515 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..5093609d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,104 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/input_data.json b/input_data.json new file mode 100644 index 00000000..9f30d7de --- /dev/null +++ b/input_data.json @@ -0,0 +1,527 @@ +[ + { + "pattern": "Jetpack Compose Apps", + "key": "$JETPACK_COMPOSE_REPOS", + "projects": [ + { + "github_url": "https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps" + } + ] + }, + { + "pattern": "MVVM - Normal", + "key": "$MVVM_NORMAL_REPOS", + "projects": [ + { + "github_url": "https://github.com/PatilShreyas/NotyKT", + "stack": "Backend - Ktor, PostgreSQL; Android" + }, + { + "github_url": "https://github.com/Sharkaboi/DrawingsApp", + "stack": "Dagger Hilt, Coroutines, Room, Dhaval2404/ImagePicker, Subsampling Scale Image View, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/b-lam/Resplash", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, Firestore, Firebase In-App Messaging, Paging, Navigation, Google Play Billing, Muzei, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/utsmannn/hiya-hiya-hiya", + "stack": "Koin, Coroutines, Retrofit, Room, Firebase Messaging, Firebase Auth, WorkManager, Google Maps, Paging, JSoup, vanniktech/Emoji, afollestad/inline-activity-result, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ashwini009/TvFlix", + "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/fevziomurtekin/DeezerClone", + "stack": "Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel,Navigation LiveData), Retrofit, Paging, Testing" + }, + { + "github_url": "https://github.com/vidit135g/Replify-Messenger", + "stack": "Dagger, Coroutines, RxJava, Testing, Realm, ExoPlayer, Conductor, Mixpanel Android, libphonenumber-android, Call Control DataShare, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/jnkforks/PokemonGo", + "stack": "Dagger Hilt, Koin, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Paging, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/andyb129/AppDevToolbox", + "stack": "Dagger, Coroutines, RxJava, Room, Venom, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/nahzur-h/awaker", + "stack": "RxJava, Testing, Retrofit, Room, ExoPlayer, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/theapache64/topcorn", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/vmiklos/plees-tracker", + "stack": "Room, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/Chesire/Nekome", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ardakazanci/Heyyoo", + "stack": "Coroutines, Retrofit, Room, Algolia, LocGetter, EasyValidation, Dexter, Splashy, secure-preferences, Paging, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/lulululbj/wanandroid", + "stack": "Koin, Coroutines, Testing, Retrofit, Navigation, FlowLayout, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/SIKV/Photos", + "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase-ML, Firebase-Analytics, Paging, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ValterKasper/space-app", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/nominalista/expenses", + "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, WorkManager, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/lmj0011/jetpack-release-tracker", + "stack": "Coroutines, Testing, Fuel, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/willowtreeapps/vocable-android", + "stack": "Koin, Coroutines, Testing, Room, Data Binding, AR, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/Shashank02051997/GitExplorer-Android", + "stack": "Kotlin, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/VIPyinzhiwei/Eyepetizer", + "stack": "Coroutines, Testing, Retrofit, WorkManager, GSYVideoPlayer, Data Binding, PermissionX, EventBus, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/PatilShreyas/Foodium", + "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/michaldrabik/Showly-2.0", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Firebase Messaging, WorkManager, Navigation, Dynamicanimation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/bernaferrari/ChangeDetection", + "stack": "Dagger, Coroutines, RxJava, Retrofit, Room, Firestore, WorkManager, Paging, Data Binding, Navigation, JSoup, js-evaluator-for-android, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/YahiaAngelo/Noted-Android", + "stack": "Koin dependency injection, Coroutines, Realm db, Material Components, Markdown, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/igorescodro/alkaa", + "stack": "Koin, Espresso, UiAutomator, Mockk, Coroutines, Navigation, Room, MotionLayout, KTX, Modularization, Dynamic Delivery, Dark Theme, klint, Detekt, codebeat, CodeFactor, Codacy, MPAndroidChart, Groupie, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/HariKulhari06/Covid-19-Tracker", + "stack": "Dagger Hilt, Coroutines, Retrofit, Room, Firestore, WorkManager, Navigation, MPAndroidChart, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/zedlabs/WallPortal", + "stack": "Dagger Hilt, Coroutines, Retrofit, Room, Paging, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ricknout/rugby-ranker", + "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, insetter, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/GeorgCantor/WallpaperApp", + "stack": "Koin, Coroutines, Retrofit, Room, Lottie, Zoomy, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/DheerajKotwani/GithubVisualizer", + "stack": "Retrofit, Firebase Auth, Coroutines, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/PHELAT/Tedu", + "stack": "Dagger, Room, Coroutines, Firebase Messaging, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/abhinav0612/PasswordVault", + "stack": "Dagger Hilt, Room, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/TheCodeMonks/NYTimes-App", + "stack": "Coroutines, Room, JSoup, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/satyamurti/LetsChat", + "stack": "Coroutines, Retrofit, Firestore, Firebase Auth, Firebase Messaging, Firebase Storage, Cloud Functions, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/mayokunthefirst/Instant-Weather", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, Algolia Search, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/qingmei2/MVVM-Architecture", + "stack": "Dagger Hilt, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/nuhkoca/libbra", + "stack": "Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/adityam49/Updoot", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/weylar/Movie", + "stack": "Dagger, Coroutines, Retrofit, Room, WorkManager, Paging, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/xiaoyanger0825/wanandroid", + "stack": "Coroutines, Retrofit, Room, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/gs-ts/TrackMyPath", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/KumarManas04/NotesSync", + "stack": "Coroutines, Testing, Room, Google Drive, Dropbox, WorkManager, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/CalvinNor/MovieMan/", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/commonpepper/Photosen", + "stack": "Retrofit, Room, Paging, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/OMIsie11/SpaceXFollower", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, WorkManager, MPAndroidChart, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/dievskiy/feedapp", + "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, Firestore, Firebase Auth, Facebook Login, WorkManager, MPAndroidChart, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/phicdy/MyCuration", + "stack": "Koin, Coroutines, Testing, Retrofit, Jsoup, WorkManager, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/droidconKE/droidconKE2020App", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, Google Auth, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/fossasia/open-event-attendee-android", + "stack": "Koin, RxJava, Testing, Retrofit, Room, Stripe, PayPal, Mapbox, Paging, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/dangquanuet/The-Movie-DB-Kotlin", + "stack": "Koin, Coroutines, RxJava, Testing, Retrofit, Room, Paging, Data Binding, Easy Permissions, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/CharlieChristensen/Cryptotracker", + "stack": "Dagger, Coroutines, Testing, socketIO, Retrofit, Room, MPAndroidChart, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/haroldadmin/MoonShot", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ganainy/Our_chat", + "stack": "Coroutines, Retrofit, Room, Firestore, Firebase Auth, Firebase Messaging, Facebook Login, WorkManager, Dexter, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/flexbooru/flexbooru", + "stack": "Kodein, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Tikxml, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/flexbooru/flexbooru-ap", + "stack": "Kodein, Coroutines, Retrofit, Room, WorkManager, Navigation, Markwon, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/gs-ts/BitfinexClient", + "stack": "Koin, RxJava, Testing, Scarlet, Room, Data Binding, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/SoftwareEngineeringDaily/software-engineering-daily-android", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, WorkManager, Exoplayer, Navigation, Android-Permissions, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/GreyLabsDev/PexWalls", + "stack": "Koin, Coroutines, RxJava, Retrofit, Room, Navigation, Markwon, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/iammert/AppLocker", + "stack": "Dagger, RxJava, Room, WorkManager, Data Binding, RxPermissions, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/xiprox/Upgur", + "stack": "Dagger, Retrofit, Room, WorkManager, Navigation, android-upload-service, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/AbduallahAtta/Social-Note", + "stack": "Koin, RxJava, Room, Firestore, Firebase Auth, Firebase Storage, Firebase Messaging, WorkManager, Data Binding, Paging, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/kacperczyk-dev/ExchangeRateApp", + "stack": "Dagger, Coroutines, Retrofit, Room, WorkManager, Data Binding, MPAndroidChart, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/cuongpm/youtube-dl-android", + "stack": "Dagger, RxJava, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/PhilippeBoisney/ArchApp", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/rumaan/file.io-Android-Client", + "stack": "Testing, Fuel, Room, WorkManager, Navigation, PermissionsDispatcher, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/skydoves/Pokedex", + "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Data Binding, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/Wiqaytna-app/wiqaytna_android", + "stack": "RxJava, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ZahraHeydari/MusicPlayer", + "stack": "Koin, Testing, Room, Firebase Storage, Firebase Auth, Firebase Messaging, Firebase Perf, Firebase Functions, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/google/iosched", + "stack": "Dagger Hilt, Coroutines, Testing, Room, Firestore, Firebase Auth, Firebase Messaging, Firebase Functions, Navigation, ARCore, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/romannurik/muzei", + "stack": "Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/mozilla-mobile/fenix", + "stack": "Coroutines, Testing, Retrofit, Room, Firebase Perf, WorkManager, Paging, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/rumboalla/apkupdater", + "stack": "Koin, JSoup, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/VMadalin/android-modular-architecture", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Navigation, Paging, Data Binding, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/moezbhatti/qksms", + "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Realm, ExoPlayer, Conductor, Data Binding, ShortcutBadger, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ApturiCOVID/apturicovid-android", + "stack": "Dagger, Coroutines, RxJava, Testing, Retrofit, Room, WorkManager, Data Binding, ShortcutBadger, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/idisfkj/AwesomeGithub", + "stack": "Coroutines, RxJava, Retrofit, Room, WorkManager, Paging, Navigation, Data Binding, ARouter, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/HabitRPG/habitica-android", + "stack": "Dagger, Coroutines, RxJava, Retrofit, Realm, Firebase Messaging, Paging, Navigation, Facebook, FlowLayout, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/KhaledSherifSayed/PopularPeople", + "stack": "Koin, Coroutines, Testing, Retrofit, Data Binding, Sandwich, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/alisonthemonster/Presently", + "stack": "Dagger, Coroutines, RxJava, Testing, Room, Firebase Messaging, WorkManager, Dropbox, Calendar view, Paging, Biometric, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/fibelatti/raffler-kotlin", + "stack": "Dagger, Coroutines, Testing, Room, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/sanmiAde/Yet_Another_Anime_List", + "stack": "Dagger, RxJava, Testing using Fakes, MockWebserver, RxRetrofit, Room, Navigation Components, Lottie, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/OMIsie11/CovidNow", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, MPAndroidChart, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/KevinGitonga/TukoNewsClient", + "stack": "Coroutines, Retrofit, Room, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/KevinGitonga/NewsFeed", + "stack": "Coroutines, Retrofit, Room, Pretty Time, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/auron567/Gallerit", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/enginebai/MovieHunt", + "stack": "Koin, RxJava, Room, Paging, Navigation, Epoxy, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/Shivamdhuria/flows_guide", + "stack": "Dagger Hilt, Coroutines, Flows, Retrofit, Room, Material Design Components, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/rizmaulana/kotlin-mvvm-covid19", + "stack": "MVVM, Live Data, Koin, RxJava, RxBinding, Offline first with simple caching, Spek2Framwework for Unit Testing, etc" + }, + { + "github_url": "https://github.com/Tristankluivert/Knote", + "stack": "ViewModel, Live Data, Koin, Room db, Coroutines etc" + }, + { + "github_url": "https://github.com/Devansh-Maurya/PukaPuka", + "stack": "MVVM, Kotlin, LiveData, ViewModel, Navigation Components, CameraKit, Firebase ML Kit Text Recognition API, Glide, Volley, Lottie" + }, + { + "github_url": "https://github.com/fionicholas/Football-App", + "stack": "MVVM, Kotlin, LiveData, ViewModel, Retrofit, Room, Koin, RxJava, etc" + }, + { + "github_url": "https://github.com/ryanrvldo/MovieCatalogue", + "stack": "MVVM, ViewModel, LiveData, Coroutines, Firebase Cloud Messaging, Retrofit, Room, Glide, Dagger Hilt, and Google Material." + }, + { + "github_url": "https://github.com/mutualmobile/Praxis", + "stack": "MVVM architecture, Dagger, Retrofit, Kotlin Coroutines, RXJava2, ViewModel, Data Binding" + }, + { + "github_url": "https://github.com/MindorksOpenSource/MVVM-Architecture-Android-Beginners", + "stack": "MVVM architecture, Dagger, Kotlin Coroutines, RXJava2, ViewModel, Data Binding, Live Data." + }, + { + "github_url": "https://github.com/mrcsxsiq/Kotlin-Pokedex", + "stack": "MVVM, Kotlin, LiveData, Navigation Jetpack, ViewModel, Room, Gradle Kotlin DSL, Databinding, Retrofit, Koin and Ktlint" + } + ] + }, + { + "pattern": "MVVM - Clean Architecture", + "key": "$MVVM_CLEAN_ARCH_REPOS", + "projects": [ + { + "github_url": "https://github.com/happysingh23828/Android-Clean-Architecture", + "stack": "Dagger, Unit Testing for modules, Mockito, RxJava, Retrofit, Room, CI-CD, SOLID, Code Coverage, Jacoco, Detekt, ktlint, Stetho, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/igorwojda/android-showcase", + "stack": "Kodein, Coroutines, Testing, Retrofit, KAndroid, Lottie, Detekt, Navigation, Dynamic Feature Modules, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/ferPrieto/Coroutines-Flows-Modularised", + "stack": "Dagger, Coroutines, Testing, Retrofit, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/akoufa/CoolWeather", + "stack": "Dagger Hilt, Coroutines, Testing, Retrofit, Room, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/odaridavid/Clean-MVVM-ArchComponents", + "stack": "Koin, Coroutines, Testing, Retrofit, Room, Data Binding, Motion Layout, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/andremion/Theatre", + "stack": "Dagger, RxJava, Testing, Retrofit, Room, Navigation, Data Binding, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/HamdiBoumaiza/CoronavirusWorldStatus", + "stack": "Dagger, Coroutines, Retrofit, Room, LiveData, ViewModel , Stetho" + }, + { + "github_url": "https://github.com/SmartToolFactory/PropertyFindAR", + "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" + }, + { + "github_url": "https://github.com/sansets/android-clean-architecture", + "stack": "Navigation Component, Dagger, Coroutines Flow, Room, Retrofit, LiveData, ViewModel, View Binding, Dynamic Feature Modules." + }, + { + "github_url": "https://github.com/VladimirWrites/BLTaxi", + "stack": "Koin, Retrofit, Room, Data Binding, Live Data, View Model, Work Manager, Material Components" + } + ] + }, + { + "pattern": "MVI - Normal", + "key": "$MVI_NORMAL_REPOS", + "projects": [ + { + "github_url": "https://github.com/HadySalhab/NewsFeed-MVI-Dagger", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, Data Binding, Navigation, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack", + "stack": "Koin, Coroutines, RxJava, Retrofit, Room, Firestore, Firebase Auth, Firebase Storage, WorkManager, Navigation, Paging, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/R4md4c/GameDealz", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, WorkManager, acra, fastAdapter, Paging, JSoup, dropbox/Store, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/mitchtabian/Open-API-Android-App", + "stack": "Dagger, Coroutines, Retrofit, Room, Navigation, LiveData, ViewModel" + } + ] + }, + { + "pattern": "MVI - Clean Architecture", + "key": "$MVI_CLEAN_ARCH_REPOS", + "projects": [ + { + "github_url": "https://github.com/lopspower/CleanRxArchitecture", + "stack": "Dagger, RxJava, Retrofit, Room, Clean Architecture, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/mitchtabian/Clean-Notes", + "stack": "Dagger, Coroutines, Testing, Retrofit, Room, Firestore, Firebase Auth, Navigation, Markdown Processor, LiveData, ViewModel" + }, + { + "github_url": "https://github.com/Ezike/Baking-App-Kotlin", + "stack": "Dagger hilt, Kotlin Coroutines & StateFlow, Unit Testing, Retrofit, DFM Navigation, FlowBinding, Exoplayer" + }, + { + "github_url": "https://github.com/Ezike/MVI_UIComponents", + "stack": "Jetpack, Dagger hilt, Kotlin Coroutines & StateFlow, Room, Retrofit, FlowBinding" + } + ] + }, + { + "pattern": "MVP", + "key": "$MVP_REPOS", + "projects": [ + { + "github_url": "https://github.com/inorichi/tachiyomi", + "stack": "Inorichi injekt, Coroutines, RxJava, Testing, Retrofit, DiskLruCache, Jsoup, WorkManager, Duktape Android, Conductor" + }, + { + "github_url": "https://github.com/ImangazalievM/UTair-MVP-Sample", + "stack": "Clean Architecture, Coroutines, RxJava 2, Coroutines, Toothpick, Moxy, Unit-tests (Spek, Mockk), UI-tests (Kaspresso)" + } + ] + }, + { + "pattern": "Other", + "key": "$OTHER_REPOS", + "projects": [ + { + "github_url": "https://github.com/shadowsocks/shadowsocks-android", + "stack": "Testing, Room, Firebase Ads, WorkManager" + }, + { + "github_url": "https://github.com/DimaBrody/Screenaway", + "stack": "Room, Play Install Referrer Library" + }, + { + "github_url": "https://github.com/BijoySingh/Scarlet-Notes", + "stack": "Dagger, Coroutines, Room, Firebase Auth, Firebase Database, Paging, Navigation, Evernote android-job, Facebook Litho, Facebook SoLoader, Biometric" + } + ] + } +] \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..a0aec681 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'awesome-android-kotlin-apps' + diff --git a/src/main/kotlin/com/github/aaka/App.kt b/src/main/kotlin/com/github/aaka/App.kt new file mode 100644 index 00000000..59eec162 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/App.kt @@ -0,0 +1,103 @@ +package com.github.aaka + +import com.github.aaka.core.ReadMeGenerator +import com.github.aaka.data.repo.GitHubRepo +import com.github.aaka.data.repo.InputDataRepo +import com.github.aaka.di.DaggerAppComponent +import com.github.aaka.data.local.InputProjectCategory +import com.github.aaka.data.local.Project +import com.github.aaka.data.repo.ReadMeRepo +import com.github.aaka.utils.DateTimeUtils +import kotlinx.coroutines.runBlocking +import retrofit2.HttpException +import javax.inject.Inject +import kotlin.system.exitProcess + +fun main(args: Array) = runBlocking { + App().run() +} + +class App { + + @Inject + lateinit var githubRepo: GitHubRepo + + @Inject + lateinit var inputDataRepo: InputDataRepo + + @Inject + lateinit var readMeRepo: ReadMeRepo + + suspend fun run() { + + // Init DI first + DaggerAppComponent + .builder() + .build() + .inject(this) + + + val inputProjectCategories = inputDataRepo.getInputProjectCategories() + val totalInputProjectCount = inputProjectCategories.sumBy { it.inputProjects.size } + val projectMap = getProjectsMap(inputProjectCategories) + + // This is to make sure that all project details are collected + require(projectMap.size == totalInputProjectCount) { + """ + Expected $totalInputProjectCount but found only ${projectMap.size}. + Failed to get some project details. + """.trimIndent() + } + + // Now let's go build the README.md + val readMeModel = readMeRepo.getReadMeModel() + val updatedReadMe = ReadMeGenerator.generateReadMe(readMeModel, inputProjectCategories, projectMap) + readMeRepo.saveReadMe(updatedReadMe) + println("Done!") + exitProcess(0) + } + + + /** + * To convert all projects into one single map with all details collected from GitHub API + */ + private suspend fun getProjectsMap(inputProjectCategories: List): Map { + val projectsMap = mutableMapOf() + + for (projectCategory in inputProjectCategories) { + for (inputProject in projectCategory.inputProjects) { + + val url = inputProject.githubUrl + val s1 = url.split("/") + + val username = s1[3] + val repoName = s1[4] + + try { + val githubRepo = githubRepo.getRepo(username, repoName) + val project = Project( + githubRepo.name!!, + githubRepo.htmlUrl!!, + githubRepo.description, + githubRepo.owner!!.login!!, + githubRepo.owner.htmlUrl!!, + Project.Reputation( + githubRepo.forks!!, + githubRepo.stargazersCount!!, + githubRepo.subscribersCount!! + ), + DateTimeUtils.fromUtcToUtcMillis(githubRepo.pushedAt), + inputProject.stack + ) + projectsMap[inputProject.githubUrl] = project + println("Finished : ${inputProject.githubUrl} -> $project") + } catch (e: HttpException) { + println("Failed: ${inputProject.githubUrl}") + throw e + } + } + } + + return projectsMap + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/core/ReadMeGenerator.kt b/src/main/kotlin/com/github/aaka/core/ReadMeGenerator.kt new file mode 100644 index 00000000..835b2d24 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/core/ReadMeGenerator.kt @@ -0,0 +1,67 @@ +package com.github.aaka.core + +import com.github.aaka.data.local.InputProjectCategory +import com.github.aaka.data.local.Project +import com.github.aaka.data.repo.ReadMeRepo +import com.github.aaka.utils.DateTimeUtils +import java.lang.StringBuilder +import java.util.* + +object ReadMeGenerator { + + private const val KEY_LAST_UPDATED = "\$LAST_UPDATED" + + fun generateReadMe( + _readMeModel: String, + inputProjectCategories: List, + projectMap: Map + ): String { + + var readMeModel = _readMeModel + + + for (category in inputProjectCategories) { + val tableBuilder = StringBuilder( + """ + | Name | Author โœ๏ธ | Description ๐Ÿ—’๏ธ | Reputation ๐Ÿ’ช | + |--------------------------------------------------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------| + """.trimIndent() + ) + + // Sorting project by last commit + category.inputProjects = + category.inputProjects.sortedByDescending { projectMap[it.githubUrl]?.lastCommitInUtcMillis } + + for (inputProject in category.inputProjects) { + + val project = + projectMap[inputProject.githubUrl] ?: error("Couldn't find ${inputProject.githubUrl} in projectMap") + + var description = "" + if (project.description != null) { + description = project.description + } + + if (project.stack != null) { + description += "

Tech Stack : ${project.stack} " + } + + description += "

Last commit: ${DateTimeUtils.getRelativeTimeSpan(project.lastCommitInUtcMillis)}" + + tableBuilder.append( + """ + + | [${project.repo}](${project.repoUrl}) | [${project.owner}](${project.ownerUrl}) | $description | ๐ŸŒŸ ${project.reputation.stars}
๐Ÿด ${project.reputation.fork}
๐Ÿ‘๏ธ ${project.reputation.watchers} | + """.trimIndent() + ) + } + + readMeModel = readMeModel.replace(category.key, tableBuilder.toString()) + } + + // Add last updated date + readMeModel = readMeModel.replace(KEY_LAST_UPDATED, Date().toString()) + + return readMeModel + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/data/local/InputProjectCategory.kt b/src/main/kotlin/com/github/aaka/data/local/InputProjectCategory.kt new file mode 100644 index 00000000..0214137e --- /dev/null +++ b/src/main/kotlin/com/github/aaka/data/local/InputProjectCategory.kt @@ -0,0 +1,24 @@ +package com.github.aaka.data.local + +import com.squareup.moshi.JsonClass + +import com.squareup.moshi.Json + + +@JsonClass(generateAdapter = true) +data class InputProjectCategory( + @Json(name = "key") + val key: String, // $OTHER_REPOS + @Json(name = "pattern") + val pattern: String, // Other + @Json(name = "projects") + var inputProjects: List +) { + @JsonClass(generateAdapter = true) + data class InputProject( + @Json(name = "github_url") + val githubUrl: String, // https://github.com/shadowsocks/shadowsocks-android + @Json(name = "stack") + val stack: String? // Testing, Room, Firebase Ads, WorkManager + ) +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/data/local/Project.kt b/src/main/kotlin/com/github/aaka/data/local/Project.kt new file mode 100644 index 00000000..425a72f1 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/data/local/Project.kt @@ -0,0 +1,34 @@ +package com.github.aaka.data.local + +import com.squareup.moshi.JsonClass +import com.squareup.moshi.Json + +@JsonClass(generateAdapter = true) +data class Project( + @Json(name = "repo") + val repo: String, // NotyKT + @Json(name = "repo_url") + val repoUrl: String, // https://github.com/PatilShreyas/NotyKT + @Json(name = "description") + 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. + @Json(name = "owner") + val owner: String, // PatilShreyas + @Json(name = "owner_url") + val ownerUrl: String, // https://github.com/PatilShreyas + @Json(name = "reputation") + val reputation: Reputation, + @Json(name = "lastCommitInUtcMillis") + val lastCommitInUtcMillis: Long?, + @Json(name = "stack") + val stack: String? // This is stack information +) { + @JsonClass(generateAdapter = true) + data class Reputation( + @Json(name = "fork") + val fork: Int, // 2 + @Json(name = "stars") + val stars: Int, // 12 + @Json(name = "watchers") + val watchers: Int // 2 + ) +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/data/remote/GetRepoResponse.kt b/src/main/kotlin/com/github/aaka/data/remote/GetRepoResponse.kt new file mode 100644 index 00000000..f004fad9 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/data/remote/GetRepoResponse.kt @@ -0,0 +1,201 @@ +package com.github.aaka.data.remote +import com.squareup.moshi.JsonClass + +import com.squareup.moshi.Json + + +@JsonClass(generateAdapter = true) +data class GetRepoResponse( + @Json(name = "archive_url") + val archiveUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/{archive_format}{/ref} + @Json(name = "archived") + val archived: Boolean?, // false + @Json(name = "assignees_url") + val assigneesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/assignees{/user} + @Json(name = "blobs_url") + val blobsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/blobs{/sha} + @Json(name = "branches_url") + val branchesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/branches{/branch} + @Json(name = "clone_url") + val cloneUrl: String?, // https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps.git + @Json(name = "collaborators_url") + val collaboratorsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/collaborators{/collaborator} + @Json(name = "comments_url") + val commentsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/comments{/number} + @Json(name = "commits_url") + val commitsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/commits{/sha} + @Json(name = "compare_url") + val compareUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/compare/{base}...{head} + @Json(name = "contents_url") + val contentsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/contents/{+path} + @Json(name = "contributors_url") + val contributorsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/contributors + @Json(name = "created_at") + val createdAt: String?, // 2020-08-28T19:50:05Z + @Json(name = "default_branch") + val defaultBranch: String?, // master + @Json(name = "deployments_url") + val deploymentsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/deployments + @Json(name = "description") + val description: String?, // [Hacktoberfest] ๐Ÿ‘“ A curated list of awesome Jetpack Compose android apps by open-source contributors. + @Json(name = "disabled") + val disabled: Boolean?, // false + @Json(name = "downloads_url") + val downloadsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/downloads + @Json(name = "events_url") + val eventsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/events + @Json(name = "fork") + val fork: Boolean?, // false + @Json(name = "forks") + val forks: Int?, // 9 + @Json(name = "forks_count") + val forksCount: Int?, // 9 + @Json(name = "forks_url") + val forksUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/forks + @Json(name = "full_name") + val fullName: String?, // androiddevnotes/awesome-jetpack-compose-android-apps + @Json(name = "git_commits_url") + val gitCommitsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/commits{/sha} + @Json(name = "git_refs_url") + val gitRefsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/refs{/sha} + @Json(name = "git_tags_url") + val gitTagsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/tags{/sha} + @Json(name = "git_url") + val gitUrl: String?, // git://github.com/androiddevnotes/awesome-jetpack-compose-android-apps.git + @Json(name = "has_downloads") + val hasDownloads: Boolean?, // true + @Json(name = "has_issues") + val hasIssues: Boolean?, // true + @Json(name = "has_pages") + val hasPages: Boolean?, // false + @Json(name = "has_projects") + val hasProjects: Boolean?, // true + @Json(name = "has_wiki") + val hasWiki: Boolean?, // true + @Json(name = "homepage") + val homepage: String?, + @Json(name = "hooks_url") + val hooksUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/hooks + @Json(name = "html_url") + val htmlUrl: String?, // https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps + @Json(name = "id") + val id: Int?, // 291133502 + @Json(name = "issue_comment_url") + val issueCommentUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/issues/comments{/number} + @Json(name = "issue_events_url") + val issueEventsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/issues/events{/number} + @Json(name = "issues_url") + val issuesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/issues{/number} + @Json(name = "keys_url") + val keysUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/keys{/key_id} + @Json(name = "labels_url") + val labelsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/labels{/name} + @Json(name = "language") + val language: String?, // Kotlin + @Json(name = "languages_url") + val languagesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/languages + @Json(name = "license") + val license: Any?, // null + @Json(name = "merges_url") + val mergesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/merges + @Json(name = "milestones_url") + val milestonesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/milestones{/number} + @Json(name = "mirror_url") + val mirrorUrl: Any?, // null + @Json(name = "name") + val name: String?, // awesome-jetpack-compose-android-apps + @Json(name = "network_count") + val networkCount: Int?, // 9 + @Json(name = "node_id") + val nodeId: String?, // MDEwOlJlcG9zaXRvcnkyOTExMzM1MDI= + @Json(name = "notifications_url") + val notificationsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/notifications{?since,all,participating} + @Json(name = "open_issues") + val openIssues: Int?, // 1 + @Json(name = "open_issues_count") + val openIssuesCount: Int?, // 1 + @Json(name = "owner") + val owner: Owner?, + @Json(name = "private") + val `private`: Boolean?, // false + @Json(name = "pulls_url") + val pullsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/pulls{/number} + @Json(name = "pushed_at") + val pushedAt: String?, // 2020-10-16T19:33:59Z + @Json(name = "releases_url") + val releasesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/releases{/id} + @Json(name = "size") + val size: Int?, // 408 + @Json(name = "ssh_url") + val sshUrl: String?, // git@github.com:androiddevnotes/awesome-jetpack-compose-android-apps.git + @Json(name = "stargazers_count") + val stargazersCount: Int?, // 83 + @Json(name = "stargazers_url") + val stargazersUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/stargazers + @Json(name = "statuses_url") + val statusesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/statuses/{sha} + @Json(name = "subscribers_count") + val subscribersCount: Int?, // 1 + @Json(name = "subscribers_url") + val subscribersUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/subscribers + @Json(name = "subscription_url") + val subscriptionUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/subscription + @Json(name = "svn_url") + val svnUrl: String?, // https://github.com/androiddevnotes/awesome-jetpack-compose-android-apps + @Json(name = "tags_url") + val tagsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/tags + @Json(name = "teams_url") + val teamsUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/teams + @Json(name = "temp_clone_token") + val tempCloneToken: Any?, // null + @Json(name = "trees_url") + val treesUrl: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps/git/trees{/sha} + @Json(name = "updated_at") + val updatedAt: String?, // 2020-11-06T09:30:05Z + @Json(name = "url") + val url: String?, // https://api.github.com/repos/androiddevnotes/awesome-jetpack-compose-android-apps + @Json(name = "watchers") + val watchers: Int?, // 83 + @Json(name = "watchers_count") + val watchersCount: Int? // 83 +) { + @JsonClass(generateAdapter = true) + data class Owner( + @Json(name = "avatar_url") + val avatarUrl: String?, // https://avatars2.githubusercontent.com/u/66256957?v=4 + @Json(name = "events_url") + val eventsUrl: String?, // https://api.github.com/users/androiddevnotes/events{/privacy} + @Json(name = "followers_url") + val followersUrl: String?, // https://api.github.com/users/androiddevnotes/followers + @Json(name = "following_url") + val followingUrl: String?, // https://api.github.com/users/androiddevnotes/following{/other_user} + @Json(name = "gists_url") + val gistsUrl: String?, // https://api.github.com/users/androiddevnotes/gists{/gist_id} + @Json(name = "gravatar_id") + val gravatarId: String?, + @Json(name = "html_url") + val htmlUrl: String?, // https://github.com/androiddevnotes + @Json(name = "id") + val id: Int?, // 66256957 + @Json(name = "login") + val login: String?, // androiddevnotes + @Json(name = "node_id") + val nodeId: String?, // MDQ6VXNlcjY2MjU2OTU3 + @Json(name = "organizations_url") + val organizationsUrl: String?, // https://api.github.com/users/androiddevnotes/orgs + @Json(name = "received_events_url") + val receivedEventsUrl: String?, // https://api.github.com/users/androiddevnotes/received_events + @Json(name = "repos_url") + val reposUrl: String?, // https://api.github.com/users/androiddevnotes/repos + @Json(name = "site_admin") + val siteAdmin: Boolean?, // false + @Json(name = "starred_url") + val starredUrl: String?, // https://api.github.com/users/androiddevnotes/starred{/owner}{/repo} + @Json(name = "subscriptions_url") + val subscriptionsUrl: String?, // https://api.github.com/users/androiddevnotes/subscriptions + @Json(name = "type") + val type: String?, // User + @Json(name = "url") + val url: String? // https://api.github.com/users/androiddevnotes + ) +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/data/remote/GitHubApi.kt b/src/main/kotlin/com/github/aaka/data/remote/GitHubApi.kt new file mode 100644 index 00000000..3876c7b0 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/data/remote/GitHubApi.kt @@ -0,0 +1,16 @@ +package com.github.aaka.data.remote + +import retrofit2.http.GET +import retrofit2.http.Header +import retrofit2.http.Path + +interface GitHubApi { + + @GET("repos/{username}/{repo}") + suspend fun getRepo( + @Header("Authorization") authToken: String, + @Path("username") username: String, + @Path("repo") repo: String, + @Header("Accept") accept: String = "application/vnd.github.v3+json" + ): GetRepoResponse +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/data/repo/GitHubRepo.kt b/src/main/kotlin/com/github/aaka/data/repo/GitHubRepo.kt new file mode 100644 index 00000000..c7b1e8f7 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/data/repo/GitHubRepo.kt @@ -0,0 +1,19 @@ +package com.github.aaka.data.repo + +import com.github.aaka.data.remote.GitHubApi +import com.github.aaka.data.remote.GetRepoResponse +import javax.inject.Inject + +class GitHubRepo @Inject constructor( + val gitHubApi: GitHubApi +) { + + suspend fun getRepo(username: String, repoName: String): GetRepoResponse { + val githubToken = System.getenv("GITHUB_ACCESS_TOKEN") + return gitHubApi.getRepo( + authToken = "token $githubToken", + username = username, + repo = repoName + ) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/data/repo/InputDataRepo.kt b/src/main/kotlin/com/github/aaka/data/repo/InputDataRepo.kt new file mode 100644 index 00000000..7cf2359f --- /dev/null +++ b/src/main/kotlin/com/github/aaka/data/repo/InputDataRepo.kt @@ -0,0 +1,32 @@ +package com.github.aaka.data.repo + +import com.github.aaka.data.local.InputProjectCategory +import com.squareup.moshi.Moshi +import com.squareup.moshi.Types +import java.io.File +import javax.inject.Inject + +class InputDataRepo @Inject constructor( + val moshi: Moshi +) { + + /** + * Get input projects + */ + fun getInputProjectCategories(): List { + // Parsing data + val dataJson = File("input_data.json").readText() + val dataItemListType = Types.newParameterizedType(List::class.java, InputProjectCategory::class.java) + val inputDataAdapter = moshi.adapter>(dataItemListType) + return inputDataAdapter.fromJson(dataJson)!! + /*.map { + it.copy( + inputProjects = if (it.inputProjects.size > 5) { + it.inputProjects.subList(0, 3) + } else { + it.inputProjects.subList(0, 1) + } + ) + }*/ + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/data/repo/ReadMeRepo.kt b/src/main/kotlin/com/github/aaka/data/repo/ReadMeRepo.kt new file mode 100644 index 00000000..cfdaa06f --- /dev/null +++ b/src/main/kotlin/com/github/aaka/data/repo/ReadMeRepo.kt @@ -0,0 +1,14 @@ +package com.github.aaka.data.repo + +import java.io.File +import javax.inject.Inject + +class ReadMeRepo @Inject constructor() { + fun getReadMeModel(): String { + return File("README.model.md").readText() + } + + fun saveReadMe(readMe: String) { + File("README.md").writeText(readMe) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/di/AppComponent.kt b/src/main/kotlin/com/github/aaka/di/AppComponent.kt new file mode 100644 index 00000000..4a0d1e73 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/di/AppComponent.kt @@ -0,0 +1,18 @@ +package com.github.aaka.di + +import com.github.aaka.App +import com.github.aaka.di.modules.MoshiModule +import com.github.aaka.di.modules.NetworkModule +import dagger.Component +import javax.inject.Singleton + +@Component( + modules = [ + NetworkModule::class, + MoshiModule::class + ] +) +@Singleton +interface AppComponent { + fun inject(app: App) +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/di/modules/MoshiModule.kt b/src/main/kotlin/com/github/aaka/di/modules/MoshiModule.kt new file mode 100644 index 00000000..174095bb --- /dev/null +++ b/src/main/kotlin/com/github/aaka/di/modules/MoshiModule.kt @@ -0,0 +1,14 @@ +package com.github.aaka.di.modules + +import com.squareup.moshi.Moshi +import dagger.Module +import dagger.Provides + +@Module +class MoshiModule { + + @Provides + fun provideMoshi(): Moshi { + return Moshi.Builder().build() + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/di/modules/NetworkModule.kt b/src/main/kotlin/com/github/aaka/di/modules/NetworkModule.kt new file mode 100644 index 00000000..a0bd2a45 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/di/modules/NetworkModule.kt @@ -0,0 +1,40 @@ +package com.github.aaka.di.modules + +import com.github.aaka.data.remote.GitHubApi +import dagger.Module +import dagger.Provides +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.moshi.MoshiConverterFactory +import javax.inject.Singleton + +@Module +class NetworkModule { + + @Singleton + @Provides + fun provideLogger(): HttpLoggingInterceptor { + return HttpLoggingInterceptor() + .setLevel(HttpLoggingInterceptor.Level.NONE) + } + + @Singleton + @Provides + fun provideOkHttpClient(httpLoggingInterceptor: HttpLoggingInterceptor): OkHttpClient { + return OkHttpClient.Builder() + .addInterceptor(httpLoggingInterceptor) + .build() + } + + @Singleton + @Provides + fun provideGithubApi(okHttpClient: OkHttpClient): GitHubApi { + return Retrofit.Builder() + .client(okHttpClient) + .baseUrl("https://api.github.com/") + .addConverterFactory(MoshiConverterFactory.create()) + .build() + .create(GitHubApi::class.java) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/tasks/convert/MarkdownToJsonConvertor.kt b/src/main/kotlin/com/github/aaka/tasks/convert/MarkdownToJsonConvertor.kt new file mode 100644 index 00000000..aeb86ee1 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/tasks/convert/MarkdownToJsonConvertor.kt @@ -0,0 +1,63 @@ +package com.github.aaka.tasks.convert + +import java.lang.StringBuilder + +val input = """ + +- https://github.com/shadowsocks/shadowsocks-android + + - A shadowsocks client for Android + + - Tech Stack = Testing, Room, Firebase Ads, WorkManager + + +- https://github.com/BijoySingh/Scarlet-Notes + + - 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 + + + +""".trimIndent() + +private val urlRegEx = "(?https:\\/\\/github\\.com\\/.+?\\/.+)".toRegex() +private val techStackRegEx = "Tech Stack = (?.+)".toRegex() + +fun main(args: Array) { + + // Parsing URL + val urlResults = urlRegEx.findAll(input) + val urls = mutableListOf() + for (url in urlResults) { + urls.add(url.value) + } + + // Parsing Stack + val stackResults = techStackRegEx.findAll(input) + val stacks = mutableListOf() + for (stack in stackResults) { + stacks.add(stack.value) + } + + // Checking data integrity + require(stacks.size == urls.size) { "Failed" } + + // Creating JSON + val sb = StringBuilder() + for ((index, url) in urls.withIndex()) { + val stack = stacks[index] + val project = """ + { + "github_url": "$url", + "stack": "${stack.split("=")[1].trim()}" + }, + """.trimIndent() + sb.append(project) + } + + // Printing JSON + println(sb) + +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/aaka/utils/DateTimeUtils.kt b/src/main/kotlin/com/github/aaka/utils/DateTimeUtils.kt new file mode 100644 index 00000000..0c6f55d2 --- /dev/null +++ b/src/main/kotlin/com/github/aaka/utils/DateTimeUtils.kt @@ -0,0 +1,31 @@ +package com.github.aaka.utils + +import org.ocpsoft.prettytime.PrettyTime +import java.text.SimpleDateFormat +import java.util.* + +object DateTimeUtils { + + /** + * To convert UTC time string to UTC millis + */ + fun fromUtcToUtcMillis(updatedAt: String?): Long? { + if (updatedAt == null) { + return null + } + + return utcFormat.parse(updatedAt).time + } + + fun getRelativeTimeSpan(lastCommitInUtcMillis: Long?): String { + if (lastCommitInUtcMillis == null) { + return "Unknown" + } + + return PrettyTime().format(Date(lastCommitInUtcMillis)) + } + + private val utcFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault()).apply { + timeZone = TimeZone.getTimeZone("UTC") + } +} \ No newline at end of file diff --git a/stale_outputs_checked b/stale_outputs_checked new file mode 100644 index 00000000..e69de29b