📊 A Minimal Expense Tracker App built to demonstrate the use of modern android architecture component with MVVM Architecture

Last update: May 10, 2022

GitHub Cards Preview

Expenso 📊

A Simple Expense Tracker App 📱 built to demonstrate the use of modern android architecture component with MVVM Architecture 🏗 . Made with love ❤️ by Spikeysanju


Try latest Expenso app apk from below 👇

Expenso


UI Design 🎨

Click to View Expenso app Design from below 👇

Expenso


Day Mode 🌞

Dashboard All Income All Expense Details Add Transaction

We Support Dark Mode Too 🌚

Dashboard All Income All Expense Details Add Transaction

Built With 🛠

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For asynchronous and more..
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • Stateflow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
    • Flow - A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • Room - SQLite object mapping library.
    • Jetpack Navigation - Navigation refers to the interactions that allow users to navigate across, into, and back out from the different pieces of content within your app
    • DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.
  • Figma - Figma is a vector graphics editor and prototyping tool which is primarily web-based.

Package Structure 📦

dev.spikeysanju.expenso # Root Package
├── di                  # Hilt DI Modules 
├── data                # For data handling.
│   ├── local           # Local Persistence Database. Room (SQLite) database
|   │   ├── dao         # Data Access Object for Room   
|   |   |── database    # Database Instance
|
├── model               # Model classes [Transaction]
|
|-- repo                # Used to handle all data operations
|
├── view                # Activity/Fragment View layer
│   ├── main            # Main root folder
|   │   ├── main        # Main Activity for RecyclerView
|   │   └── viewmodel   # Transaction ViewModel
|   │   ├── adapter     # Adapter for RecyclerView
│   ├── Dashboard       # Dashboard root folder
|   |   |__ dashboard   # Dashboard 
│   ├── Add             # Add Transaction root folder
|   |   |__ add         # Add Transaction 
│   ├── Edit            # Edit Transaction root folder
|   |   |__ edit        # Edit Transaction
│   ├── Details         # Add Transaction root folder
|   |   |__ details     # Transaction Details
│   ├── About           # About root folder
|   |   |__ about       # About 
│   ├── Dialog          # All Dialogs root folder
|   |   |__ dialog      # Error Dialog 
├── utils               # All extension functions

Architecture 🗼

This app uses MVVM (Model View View-Model) architecture.

Build-tool 🧰

You need to have Android Studio Beta 3 or above to build this project.
Beta-studio


Ohh You want iOS App Too? 📱

Well, we've iOS version here, Checkout the iOS version of this app Expenso


Contribute 🤝

If you want to contribute to this app, you're always welcome! See Contributing Guidelines.


Contact 📩

Have an project? DM us at 👇

Drop a mail to:- [email protected]


Donation 💰

If this project help you reduce time to develop, you can give me a cup of coffee :)

Buy Me A Coffee


Credits 🤗


License 🔖

    Apache 2.0 License


    Copyright 2021 Spikey sanju

    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

       http://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.

GitHub

https://github.com/Spikeysanju/Expenso
Comments
  • 1. Refactor `TransactionViewModel` #215

    Replaced AndroidViewModel in TransactionViewModel with Viewmodel , which eliminated the use of viewmodel factory and UiModeDatastore is provided using constructor injection

    Reviewed by yash-k9 at 2022-01-03 18:45
  • 2. Export CSV

    Change log :

    • added Opencsv
    • added csv export functionality
    • added Document provider for exporting and opening CSV files also support scoped storage

    Behaviour https://user-images.githubusercontent.com/11576342/139001089-d60cb7ee-a0ed-42fd-9d7f-ed60a4789491.mp4

    APK for testing https://drive.google.com/file/d/1BgEo2_t0SicMMivDzKR6uvY3Yjv0O5gU/view?usp=sharing

    Reviewed by ch8n at 2021-10-27 04:41
  • 3. Bump gradle from 4.2.0-beta04 to 7.1.0-alpha09

    Bumps gradle from 4.2.0-beta04 to 7.1.0-alpha09.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2021-08-23 23:05
  • 4. Added Export to CSV

    Feature Preview

    https://user-images.githubusercontent.com/11576342/107530361-cd3be400-6be1-11eb-9d02-357259f06d4f.mp4

    Current functionality :

    • Export your transaction details to CSV file
    • This file is located at Documents/expenso folder of your device

    How test?

    • manually test with sample data

    Limitations?

    • This feature isn't supported for android 10+ cause that requires scoped storage implementation
    • Always open for improvements in structure and solutioning
    Reviewed by ch8n at 2021-02-10 14:57
  • 5. Bump gradle from 7.2.0-alpha03 to 7.3.0-alpha09

    Bumps gradle from 7.2.0-alpha03 to 7.3.0-alpha09.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-04-21 23:10
  • 6. Bump gradle from 7.2.0-alpha03 to 7.3.0-alpha08

    Bumps gradle from 7.2.0-alpha03 to 7.3.0-alpha08.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-04-12 23:17
  • 7. Bump gradle from 7.2.0-alpha03 to 7.3.0-alpha07

    Bumps gradle from 7.2.0-alpha03 to 7.3.0-alpha07.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-03-17 23:09
  • 8. Bump gradle from 7.2.0-alpha03 to 7.3.0-alpha06

    Bumps gradle from 7.2.0-alpha03 to 7.3.0-alpha06.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-03-14 23:10
  • 9. Bump gradle from 7.2.0-alpha03 to 7.3.0-alpha05

    Bumps gradle from 7.2.0-alpha03 to 7.3.0-alpha05.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-03-03 23:11
  • 10. Bump gradle from 7.2.0-alpha03 to 7.3.0-alpha04

    Bumps gradle from 7.2.0-alpha03 to 7.3.0-alpha04.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-03-02 23:24
  • 11. Bump gradle from 7.2.0-alpha03 to 7.3.0-alpha03

    Bumps gradle from 7.2.0-alpha03 to 7.3.0-alpha03.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-02-14 23:11
  • 12. Bump gradle from 7.2.0-alpha03 to 7.4.0-alpha01

    Bumps gradle from 7.2.0-alpha03 to 7.4.0-alpha01.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-05-11 23:14
  • 13. Create Java Project

    Hi, My name is Ramon and I like so much this project!!!

    I need to make something like that as a personal project. So I was studied Java language. So I wanna ask you something:

    • Is there any way to create this project in java?
    • How can I export figma UI to android project?

    Please help with something.

    Reviewed by Rahguabiraba at 2022-05-07 00:29
  • 14. Bump material from 1.4.0 to 1.6.0

    Bumps material from 1.4.0 to 1.6.0.

    Release notes

    Sourced from material's releases.

    1.6.0

    What's new since 1.5.0

    Other highlights

    • Material 3
      • Hide shadows on all M3 Toolbar styles, not just Surface style (b49284ec75ab16a9f649b97cb26aa4a17bc82512)
      • Migrate action bar popup themes to M3 (2ae3ca42985722900f53de9d9a1ef61c143767eb)
      • Update M3 card elevation according to the spec (bb23e2d6ad7888713d51e1dc53f36a69b0db62ff)
      • Add missing attributes to M3 button styles (3c9b45292d78a80f511d672bb5fe4ef1431dd8bd)
      • Update M3 navigation rail text appearances (6b57c52973c2ceb97c88da1df1b72859ed28775a)
      • Fix M3 date picker styles (fba1a341c31cbe2c5d71c239afc8bcc14af9d968)
      • Change checkedIconGravity values to enum (bc56d5b43b93ab6dbed4d561ad8b8b1351f9535c)
    • Badging
      • Prevent multiple badges being attached to a menu item at the same time (b3db1cc02855453f91353fca9e9cb11ccf0db9cc)
      • Refactored Badge state managing logic (bbbeacd64e3b1cc64e8edc6adf430aad45d03e32)
      • Added support for different locale on badges (b8f2dd53e0e19ea376639a610a0b51faabf0f9af)
    • BottomNavigationView
      • Added supported NavigationBarView#LabelVisibilityMode alternative to deprecated BottomNavigationView#LabelVisibilityMode. (12222684370dfb6c3400fd984578059d22741bb3)
      • Removed font scaling from NavigationBarView item labels. (d66676fd6bb93556c2cb3b0d9f7885821ac5bd8f)
      • Set backgroundTint explicitly to @​null in M3 bottom navigation styles (adbcf8cbbc6e95921d233c87eb87dc01b6cc8f0d)
    • BottomSheet
      • Fix bottom sheets in EXPANDED state when the expanded height is the same as the collapsed height (493243ea1e5a2a0eee675b652cae0eeaec73b6a3)
      • Simplify state transition logic (04c483cf3466cd0a7bf4835cadccc2372ba0da2b)
      • Fix activity leak when setting states on destroying activities (43114c4f7c9ca0c70c48c777dbd2957386d539e5)
      • Update edge-to-edge paddings when bottom sheet is laid out (19af0ac9d98cc3c504ce69ae38fbc00570cc85f5)
    • Chip
      • Refactored chip group selection logic to a standalone class (f3c6430f94bb7f82afc740e5545fd6302e9bf3aa)
      • Added missing attributes to M3 chip styles (cc18f3f7e8ff097b80d774911c2ede92d4b30698)
      • Update M3 chip styles with spec (8ed0ac9fd383bbb53fac100e74b2a0e9ee41bc9a)
    • CollapsingToolbarLayout
      • Fixed shadow issues when transition between expanded and collapsed states. (86e8b00ecdc9f9c5212e5a7e0700bd95be4da94b)
      • Constrain adjusted font weight to acceptable values (5dce006a5c1649df4eb6631c85619017728726af)
    • Color
      • Fix resources being re-harmonized when wrapContextIfAvailable() is used. (b402cb3c032ea10beb941284b49a9667ee7abe1e)
      • Added ColorGrid classes for color harmonization demo. (fcc10914f2b87c0e5f28761e8316bba2d9d1a318)
      • Add kyocera to dynamic colors allowlist and reorganized based on alphabetical order. (1dad5f65d4c54952a3a63efa4b9fd81b9c46d4a2)
      • Fix HarmonizedColorsOptions.Builder#setColorAttributes is marked as nullable (44054aaf3ab11d815e4086b37575e829e0b626db)
      • Added support for color resources harmonization in XML (869d9430677e66f9007bee65960dc0539627fd4a)
      • Refactor DynamicColors overloading methods and added DynamicColorsOptions class to support color harmonization. (bdbf052aaf1e824f221057ca3c3acae80d1a521d)
      • Update DynamicColors to use peekDecorView() instead of getDecorView() when applying dynamic color theme overlay (56ed07008ba0bff682e99c5d91126596fe9e6ddf)
      • Update DynamicColors util to applyStyle() on window decorView theme as well to fix potential ContextMenu issue (f6c8fa5aefc84a1543eca3056a538120de0b4297)
      • Update DynamicColors util to use activity.getTheme().applyStyle() instead of activity.setTheme() to workaround Force Dark issue (b84f35f1211028e7c456ce1ca91685a938f0ffcc)
      • Avoid Short#compare usage in ColorResourcesTableCreator.java since it requires API level 19 (48741b4e16236ee8ac9dc0052204e6a7be32c0f4)
      • Add Resource Table format for XML color Harmonization. (822a5b2cb2dedf133618d981140edf30db0058ef)
    • Dialog
      • Fixed crashes when colorControlHighlight is a CSL (1c5c054b70a55c2567cdfee460d3876158b2945a)
      • Added date and time picker themes to M3 dialog themes (8342f9025eefe64ca24312467d021a522e833769)

    ... (truncated)

    Commits
    • 1dbd3dd [M3][Color] Updated color harmonization demo
    • b402cb3 [M3][Color] Fix resources being re-harmonized when wrapContextIfAvailable() i...
    • fcc1091 [M3][Color] Added ColorGrid classes for color harmonization demo.
    • 207cb53 [M3][Color] Refactored MaterialColorSpec to take @​ColorRes or @​ColorInt for t...
    • 1dad5f6 [M3][Color] Add kyocera to dynamic colors allowlist and reorganized based on ...
    • 2bfc7ba [SnackBar] Fix margins are added multiple times when show() is called
    • d6cd0e6 Update library version to 1.6.0
    • a8256c2 [Gradle] Changed gradle so that tests run in parallel, preventing OutOfMemory...
    • 9be224b [Gradle] Make sure targetSdkVersion is applied to all Gradle sub projects
    • aeed987 [Tests] Update Robolectric to 4.7.3
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-05-04 23:10
  • 15. Bump kotlinx-coroutines-play-services from 1.5.2-native-mt to 1.6.1-native-mt

    Bumps kotlinx-coroutines-play-services from 1.5.2-native-mt to 1.6.1-native-mt.

    Release notes

    Sourced from kotlinx-coroutines-play-services's releases.

    1.6.1

    • Rollback of time-related functions dispatching on Dispatchers.Main. This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#3106, #3113).
    • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#3227).
    • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#2930).
    • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#3180).
    • New API to convert a CoroutineDispatcher to a Rx scheduler (#968, #548). Thanks @​recheej!
    • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#3197).
    • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#3223).
    • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#3153).
    • Static memory consumption of Dispatchers.Default was significantly reduced (#3137).
    • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

    1.6.0

    Note that this is a full changelog relative to the 1.5.2 version. Changelog relative to 1.6.0-RC3 can be found at the end.

    kotlinx-coroutines-test rework

    Dispatchers

    • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#2919).
    • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#2943).
    • Introduced new Dispatchers.shutdown method for containerized environments (#2558).
    • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#2919).

    Breaking changes

    • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#2774, #2791).
    • Mutex.onLock is deprecated for removal (#2794).
    • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present (#2972).
      • To opt-out from this behaviour, kotlinx.coroutines.main.delay system property can be set to false.
    • Java target of coroutines build is now 8 instead of 6 (#1589).
    • Source-breaking change: extension collect no longer resolves when used with a non-in-place argument of a functional type. This is a candidate for a fix, uncovered after 1.6.0, see #3107 for the additional details.

    Bug fixes and improvements

    • Kotlin is updated to 1.6.0.
    • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#2914).
    • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#2893).
    • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#2971).
    • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#2488, #2863, #2871).
    • Flow exception transparency mechanism is improved to be more exception-friendly (#3017, #2860).
    • Cancellation from flat* operators that leverage multiple coroutines is no longer propagated upstream (#2964).
    • SharedFlow.collect now returns Nothing (#2789, #2502).
    • DisposableHandle is now fun interface, and corresponding inline extension is removed (#2790).

    ... (truncated)

    Changelog

    Sourced from kotlinx-coroutines-play-services's changelog.

    Change log for kotlinx.coroutines

    Version 1.6.1

    • Rollback of time-related functions dispatching on Dispatchers.Main. This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#3106, #3113).
    • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#3227).
    • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#2930).
    • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#3180).
    • New API to convert a CoroutineDispatcher to a Rx scheduler (#968, #548). Thanks @​recheej!
    • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#3197).
    • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#3223).
    • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#3153).
    • Static memory consumption of Dispatchers.Default was significantly reduced (#3137).
    • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

    Version 1.6.0

    Note that this is a full changelog relative to the 1.5.2 version. Changelog relative to 1.6.0-RC3 can be found at the end.

    kotlinx-coroutines-test rework

    Dispatchers

    • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#2919).
    • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#2943).
    • Introduced new Dispatchers.shutdown method for containerized environments (#2558).
    • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#2919).

    Breaking changes

    • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#2774, #2791).
    • Mutex.onLock is deprecated for removal (#2794).
    • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present(#2972).
      • To opt-out from this behaviour, kotlinx.coroutines.main.delay system property can be set to false.
    • Java target of coroutines build is now 8 instead of 6 (#1589).
    • Source-breaking change: extension collect no longer resolves when used with a non-in-place argument of a functional type. This is a candidate for a fix, uncovered after 1.6.0, see #3107 for the additional details.

    Bug fixes and improvements

    • Kotlin is updated to 1.6.0.
    • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#2914).
    • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#2893).
    • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#2971).
    • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#2488, #2863, #2871).

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-04-05 23:08
  • 16. Bump kotlinx-coroutines-android from 1.5.2-native-mt to 1.6.1-native-mt

    Bumps kotlinx-coroutines-android from 1.5.2-native-mt to 1.6.1-native-mt.

    Release notes

    Sourced from kotlinx-coroutines-android's releases.

    1.6.1

    • Rollback of time-related functions dispatching on Dispatchers.Main. This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#3106, #3113).
    • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#3227).
    • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#2930).
    • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#3180).
    • New API to convert a CoroutineDispatcher to a Rx scheduler (#968, #548). Thanks @​recheej!
    • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#3197).
    • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#3223).
    • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#3153).
    • Static memory consumption of Dispatchers.Default was significantly reduced (#3137).
    • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

    1.6.0

    Note that this is a full changelog relative to the 1.5.2 version. Changelog relative to 1.6.0-RC3 can be found at the end.

    kotlinx-coroutines-test rework

    Dispatchers

    • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#2919).
    • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#2943).
    • Introduced new Dispatchers.shutdown method for containerized environments (#2558).
    • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#2919).

    Breaking changes

    • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#2774, #2791).
    • Mutex.onLock is deprecated for removal (#2794).
    • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present (#2972).
      • To opt-out from this behaviour, kotlinx.coroutines.main.delay system property can be set to false.
    • Java target of coroutines build is now 8 instead of 6 (#1589).
    • Source-breaking change: extension collect no longer resolves when used with a non-in-place argument of a functional type. This is a candidate for a fix, uncovered after 1.6.0, see #3107 for the additional details.

    Bug fixes and improvements

    • Kotlin is updated to 1.6.0.
    • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#2914).
    • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#2893).
    • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#2971).
    • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#2488, #2863, #2871).
    • Flow exception transparency mechanism is improved to be more exception-friendly (#3017, #2860).
    • Cancellation from flat* operators that leverage multiple coroutines is no longer propagated upstream (#2964).
    • SharedFlow.collect now returns Nothing (#2789, #2502).
    • DisposableHandle is now fun interface, and corresponding inline extension is removed (#2790).

    ... (truncated)

    Changelog

    Sourced from kotlinx-coroutines-android's changelog.

    Change log for kotlinx.coroutines

    Version 1.6.1

    • Rollback of time-related functions dispatching on Dispatchers.Main. This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#3106, #3113).
    • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#3227).
    • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#2930).
    • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#3180).
    • New API to convert a CoroutineDispatcher to a Rx scheduler (#968, #548). Thanks @​recheej!
    • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#3197).
    • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#3223).
    • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#3153).
    • Static memory consumption of Dispatchers.Default was significantly reduced (#3137).
    • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

    Version 1.6.0

    Note that this is a full changelog relative to the 1.5.2 version. Changelog relative to 1.6.0-RC3 can be found at the end.

    kotlinx-coroutines-test rework

    Dispatchers

    • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#2919).
    • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#2943).
    • Introduced new Dispatchers.shutdown method for containerized environments (#2558).
    • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#2919).

    Breaking changes

    • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#2774, #2791).
    • Mutex.onLock is deprecated for removal (#2794).
    • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present(#2972).
      • To opt-out from this behaviour, kotlinx.coroutines.main.delay system property can be set to false.
    • Java target of coroutines build is now 8 instead of 6 (#1589).
    • Source-breaking change: extension collect no longer resolves when used with a non-in-place argument of a functional type. This is a candidate for a fix, uncovered after 1.6.0, see #3107 for the additional details.

    Bug fixes and improvements

    • Kotlin is updated to 1.6.0.
    • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#2914).
    • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#2893).
    • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#2971).
    • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#2488, #2863, #2871).

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-04-05 23:08
  • 17. Bump kotlinx-coroutines-core from 1.5.2 to 1.6.1

    Bumps kotlinx-coroutines-core from 1.5.2 to 1.6.1.

    Release notes

    Sourced from kotlinx-coroutines-core's releases.

    1.6.1

    • Rollback of time-related functions dispatching on Dispatchers.Main. This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#3106, #3113).
    • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#3227).
    • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#2930).
    • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#3180).
    • New API to convert a CoroutineDispatcher to a Rx scheduler (#968, #548). Thanks @​recheej!
    • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#3197).
    • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#3223).
    • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#3153).
    • Static memory consumption of Dispatchers.Default was significantly reduced (#3137).
    • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

    1.6.0

    Note that this is a full changelog relative to the 1.5.2 version. Changelog relative to 1.6.0-RC3 can be found at the end.

    kotlinx-coroutines-test rework

    Dispatchers

    • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#2919).
    • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#2943).
    • Introduced new Dispatchers.shutdown method for containerized environments (#2558).
    • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#2919).

    Breaking changes

    • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#2774, #2791).
    • Mutex.onLock is deprecated for removal (#2794).
    • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present (#2972).
      • To opt-out from this behaviour, kotlinx.coroutines.main.delay system property can be set to false.
    • Java target of coroutines build is now 8 instead of 6 (#1589).
    • Source-breaking change: extension collect no longer resolves when used with a non-in-place argument of a functional type. This is a candidate for a fix, uncovered after 1.6.0, see #3107 for the additional details.

    Bug fixes and improvements

    • Kotlin is updated to 1.6.0.
    • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#2914).
    • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#2893).
    • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#2971).
    • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#2488, #2863, #2871).
    • Flow exception transparency mechanism is improved to be more exception-friendly (#3017, #2860).
    • Cancellation from flat* operators that leverage multiple coroutines is no longer propagated upstream (#2964).
    • SharedFlow.collect now returns Nothing (#2789, #2502).
    • DisposableHandle is now fun interface, and corresponding inline extension is removed (#2790).

    ... (truncated)

    Changelog

    Sourced from kotlinx-coroutines-core's changelog.

    Version 1.6.1

    • Rollback of time-related functions dispatching on Dispatchers.Main. This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#3106, #3113).
    • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#3227).
    • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#2930).
    • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#3180).
    • New API to convert a CoroutineDispatcher to a Rx scheduler (#968, #548). Thanks @​recheej!
    • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#3197).
    • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#3223).
    • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#3153).
    • Static memory consumption of Dispatchers.Default was significantly reduced (#3137).
    • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

    Version 1.6.0

    Note that this is a full changelog relative to the 1.5.2 version. Changelog relative to 1.6.0-RC3 can be found at the end.

    kotlinx-coroutines-test rework

    Dispatchers

    • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#2919).
    • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#2943).
    • Introduced new Dispatchers.shutdown method for containerized environments (#2558).
    • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#2919).

    Breaking changes

    • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#2774, #2791).
    • Mutex.onLock is deprecated for removal (#2794).
    • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present(#2972).
      • To opt-out from this behaviour, kotlinx.coroutines.main.delay system property can be set to false.
    • Java target of coroutines build is now 8 instead of 6 (#1589).
    • Source-breaking change: extension collect no longer resolves when used with a non-in-place argument of a functional type. This is a candidate for a fix, uncovered after 1.6.0, see #3107 for the additional details.

    Bug fixes and improvements

    • Kotlin is updated to 1.6.0.
    • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#2914).
    • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#2893).
    • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#2971).
    • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#2488, #2863, #2871).
    • Flow exception transparency mechanism is improved to be more exception-friendly (#3017, #2860).
    • Cancellation from flat* operators that leverage multiple coroutines is no longer propagated upstream (#2964).

    ... (truncated)

    Commits
    • 2c3435c Merge pull request #3232 from Kotlin/version-1.6.1
    • 429b5d1 Version 1.6.1
    • 262876b Merge branch 'master' into develop
    • a5dd74b CopyableThreadContextElement implementation (#3227)
    • 8133c97 Fix limitedParallelism implementation on K/N (#3226)
    • 6c326e4 Do not mention service loading for CoroutineExceptionHandler as it is not mea...
    • f991742 docs: clarify section on coroutine memory consumption (#3225)
    • 0d26d6c Add references to available implementations in TestDispatcher docs (#3200)
    • 584b3c4 Fix typo: onDeliveredElement (#3217)
    • bc120a1 Fix a typo (#3213)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-04-04 23:11
MVVM RECIPE ANDROID APP Is an app where I show how to use MVVM, retrofit, dagger hilt, coroutine, liveData, Kotlin, navigation component, and so on...
MVVM RECIPE ANDROID APP Is an app where I show how to use MVVM, retrofit, dagger hilt, coroutine, liveData, Kotlin, navigation component, and so on...

MVVM RECIPE ANDROID APP Is an app where I show how to use MVVM, retrofit, dagger hilt, coroutine, liveData, kotlin, navigation component, and so on...

Apr 4, 2022
📝 A demo todo/notes app which demonstrates the use of MVVM architecture, Navigation Component Library, Room Database, LiveData, Coroutines
📝 A demo todo/notes app which demonstrates the use of MVVM architecture, Navigation Component Library, Room Database, LiveData, Coroutines

?? MyNotes A demo notes/todo app which demonstrates the use of MVVM architecture, Navigation Component Library, Room Database, LiveData, Coroutines et

May 9, 2022
JeTaxi is built on Clean Architecture-MVVM with Kotlin and follows modern android development trends.
 JeTaxi is built on Clean Architecture-MVVM with Kotlin and follows modern android development trends.

JeTaxi is built on Clean Architecture-MVVM with Kotlin and follows modern android development trends. Also, It uses some of Jetpack and popular libraries. These are Kotlin Coroutine-Flow, kotlinx.serialization, Hilt, Compose, Accompanist, Retrofit2, OkHttp3, Chucker, MockWebServer, Truth.

May 19, 2022
A sample project in Kotlin to demonstrate AndroidX, MVVM, Coroutines, Hilt, Room, Data Binding, View Binding, Retrofit, Moshi, Leak Canary and Repository pattern.

This repository contains a sample project in Kotlin to demonstrate AndroidX, MVVM, Coroutines, Hilt, Room, Data Binding, View Binding, Retrofit, Moshi, Leak Canary and Repository pattern

May 9, 2022
GraphQLTrial is a demo application based on modern Android application tech-stacks and MVVM architecture.

GraphQLTrial is a demo application based on modern Android application tech-stacks and MVVM architecture. App fetching data from the netw

Sep 26, 2021
A small demo application based on modern Android application technology stacks and MVVM architecture
A small demo application based on modern Android application technology stacks and MVVM architecture

Pokedex Pokedex es una pequeña aplicación de demostración basada en modernas pil

Dec 17, 2021
Movies App by MVVM, Coroutines, Retrofit,, Navigation Component, ExoPlayer, Coil and Firebase
Movies App by MVVM, Coroutines, Retrofit,, Navigation Component, ExoPlayer, Coil and Firebase

Show-Time Movies App by MVVM, Coroutines, Retrofit, Navigation Component, ExoPlayer, Coil and Firebase Screens Home Movies Details Movies List Person

May 16, 2022
Chat App MVVM + Clean ArchitectureChat App MVVM + Clean Architecture
Chat App MVVM + Clean ArchitectureChat App MVVM + Clean Architecture

Chat App MVVM + Clean Architecture This Android application built using MVVM + Clean Architecture architecture approach and is written 100% in Kotlin.

Oct 14, 2021
An android app built using Kotlin following Multi-Module Clean Architecture MVVM
An android app built using Kotlin following Multi-Module Clean Architecture MVVM

RickyandMorty An android app built using Kotlin that consumes RickyadMorty API to display characters.It has been built following Clean Architecture Pr

Feb 3, 2022
Oasis is a simple gym progress-tracking app built on MVVM architecture.
Oasis is a simple gym progress-tracking app built on MVVM architecture.

Oasis About Oasis is a simple gym progress-tracking app built on MVVM architecture. Built with Kotlin Coroutines Flow Firebase Auth Firebase Firestore

Feb 7, 2022
A more lightweight and simpler to use MVVM architecture for Android.
A more lightweight and simpler to use MVVM architecture for Android.

A more lightweight and simpler to use MVVM architecture for Android, Data and views are two-way bound.

May 17, 2022
Clean Architecture - Kotlin, MVVM, Use cases
Clean Architecture - Kotlin, MVVM, Use cases

CleanArchitecture Is Clean Architecture only MVVM ? NO, MVVM is a part of clean architecture. MVVM includes Model, View and ViewModel and in addition

May 13, 2022
Repository that showcases 3 Android app architectures: "Standard Android", MVP and MVVM. The exact same app is built 3 times following the different patterns.
Repository that showcases 3 Android app architectures:

Archi This repository showcases and compares different architectural patterns that can be used to build Android apps. The exact same sample app is bui

May 16, 2022
Android Clean Architecture💎 Base Project Android with Kotlin and MVVM applying clean architecture
 Android Clean Architecture💎 Base Project Android with Kotlin and MVVM applying clean architecture

Android Clean Architecture?? Base Project Android with Kotlin and MVVM applying clean architecture

May 18, 2022
A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.
A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.

A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.

Apr 15, 2022
NY Times - New app built using MVVM and Hilt
NY Times - New app built using MVVM and Hilt

NYTimes A simple app to hit the NY Times Most Popular Articles API and show a li

Jan 30, 2022
Playground project built with MVVM with Clean Artchitect to try out new tech in Android 🌍

Clean-MVVM-Playground Playground project built with MVVM with Clean Artchitect to try out new tech in Android ?? Features ?? 100% Kotlin Following MVV

May 5, 2022
Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.
Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.

Full Management is an application that helps you manage your tasks effectively. built with the latest tachs like Compose UI, Jetpack libraries, and MVVM design pattern.

Feb 20, 2022
Basic-MVVM-Example - Basic Android Application MVVM
Basic-MVVM-Example - Basic Android Application MVVM

Android's MVVM Architecture in Kotlin Why a simple app ? Because it's easier to

Jan 26, 2022