πŸ“Š A Minimal Expense Tracker App built to demonstrate the use of modern android architecture component with MVVM Architecture

Overview

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.

Comments
  • Refactor `TransactionViewModel` #215

    Refactor `TransactionViewModel` #215

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

    improvements 
    opened by yash-k9 3
  • Export CSV

    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

    opened by ch8n 3
  • Bump gradle from 4.2.0-beta04 to 7.1.0-alpha09

    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)
    dependencies 
    opened by dependabot[bot] 2
  • Added Export to CSV

    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
    opened by ch8n 2
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha09

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha09

    Bumps gradle from 7.2.0-alpha03 to 8.0.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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha08

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha08

    Bumps gradle from 7.2.0-alpha03 to 8.0.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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha07

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha07

    Bumps gradle from 7.2.0-alpha03 to 8.0.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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha06

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha06

    Bumps gradle from 7.2.0-alpha03 to 8.0.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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha05

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha05

    Bumps gradle from 7.2.0-alpha03 to 8.0.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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha04

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha04

    Bumps gradle from 7.2.0-alpha03 to 8.0.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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha03

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha03

    Bumps gradle from 7.2.0-alpha03 to 8.0.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)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha10

    Bump gradle from 7.2.0-alpha03 to 8.0.0-alpha10

    Bumps gradle from 7.2.0-alpha03 to 8.0.0-alpha10.

    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)
    dependencies 
    opened by dependabot[bot] 0
  • Bump material from 1.4.0 to 1.7.0

    Bump material from 1.4.0 to 1.7.0

    Bumps material from 1.4.0 to 1.7.0.

    Release notes

    Sourced from material's releases.

    1.7.0

    What's new since 1.6.1

    • All new Switch component with a new look! Check out the updated documentation for details.
    • New Shape system that is now being used by all components. Learn about the shape system and see how its used in the Material3 theme and components by checking out the updated documentation
    • Checkbox has been redesigned and now supports indeterminate and error states! Check out the updated documentation.
    • BottomAppBar has been redesigned! Check out the updated documentation
    • New Icon Button support has been added including outlined, tonal, and filled variants!

    New minimum requirements for your app's project:

    Dependency Updates

    Dependency Previous version New version
    androidx.appcompat 1.5.0-beta01 1.5.0
    androidx.core 1.5.0 1.6.0
    androidx.test 1.1.0 1.4.0
    Android Gradle Plugin (AGP) 4.0.0 7.2.0
    Gradle 6.1.1 7.3.3
    Java Version 1.7 (7) 1.8 (8)

    Other highlights

    • MaterialButton
      • Added methods to not toggle checked state on buttons on click (a6011078689521cf0c042e7444c36b6607cedcf9)
      • Updated M3 button style to add outlined icon button style (467a2c9f7314cdfd5300594b4e66a70657d5d702)
      • Updated M3 button style to add filled tonal icon button style (14578ed68cb296080d511ceb502469903c0ef5d7)
      • Updated M3 button style to add filled icon button style (25606cf34addae1420eeba24eec0f90aef06d0d2)
      • Fix icon textStart/End alignment with multiline text (b6b895a1e40efbf2e36b2ea5e91bae7bcd0bdb8c)
      • Fix icon position with multiline text (19d05000bcc273f781a85ce41530f604fead268e)
    • Documentation
      • Updated typography guidelines to M3 (104a342307c31170494c3dcd2011ca63b182e4b5)
      • Added an example to demonstrate how to make bottom sheet dialog in edge-to-edge mode (57a3c989ffdaee252fa00bbe5246f837d18b6a60)
      • Updated Snackbar doc regarding CoordinatorLayout (ef2c2fad36d11933d71ea5c9a2826be3119bec17)
      • Add status bar / edge-to-edge section to Top App Bar doc (b8e1f978940c218502ee6161d0b3f673299eceb0)
    • TopAppBar
      • Fixed bug in HeaderScrollingViewBehavior that causes child translation Y not to be reset to default if the behavior is changed from an overlapping to non-overlapping behavior in layoutParams.setBehavior (00c62d21c9e21eb595d2d83bddcf6782a9773729)
      • Excluded views that are GONE from scroll range calculation (687e73590de5ea219a14a336094002b9d3884af5)
      • Fixed collapsing title issue with different fonts (0c341c4e9b9703945ffbf22af0a4158bde41582c)
      • Added setLiftOnScrollTargetView() method (d6c435461eece74656db5e2de92944c7ca807439)
    • A11y
      • Made multi-selection Chips announce as Buttons (d4c2c9549051d706d91dcd96ceb79c52e1aedd30)
      • Made drawer announce its number of items (b1f7d5bebc298865a25747d2f28050a67b15761d)
    • TextInputLayout
      • Added a new custom length counter field and getters/setters to switch how text length is calculated for the counter. (4ded01ed3ff5f6669080b6330c3d6dce8869cdca)
      • Fixed hint is not displayed when expanding space is limited (73cb1b6e78a0e28d157a1b5da061568117c2fa40)

    ... (truncated)

    Commits
    • 355c69d Update library version to 1.7.0
    • 5cb92c8 [Snackbar] Made snackbar javadoc more clear of how its dismissing works.
    • c0e24cd [Documentation][Shape] Update documentation
    • 7e18ac4 [Checkbox] Fixed NPE crash due to layer drawable's constant state issue in AP...
    • ec1663f [CheckBox] Fix a11y announcement for indeterminate state.
    • aaa7646 Update library version to 1.7.0-rc01
    • 2cc8932 [Checkbox] Fixed pre 21 issue where the icon did not update its color accordi...
    • a394314 [Process] Update AppCompat version to 1.5 stable
    • 3af5784 [ExposedDropdownMenu] Fixed missing icon activated color.
    • c1e20e2 [Docs] Changing the name for the AGP compatibility variable so that the IDE p...
    • 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)
    dependencies 
    opened by dependabot[bot] 0
  • Bump appcompat from 1.3.1 to 1.5.1

    Bump appcompat from 1.3.1 to 1.5.1

    Bumps appcompat from 1.3.1 to 1.5.1.

    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)
    dependencies 
    opened by dependabot[bot] 0
  • Bump room-ktx from 2.3.0 to 2.4.3

    Bump room-ktx from 2.3.0 to 2.4.3

    Bumps room-ktx from 2.3.0 to 2.4.3.

    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)
    dependencies 
    opened by dependabot[bot] 0
  • Bump room-compiler from 2.3.0 to 2.4.3

    Bump room-compiler from 2.3.0 to 2.4.3

    Bumps room-compiler from 2.3.0 to 2.4.3.

    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)
    dependencies 
    opened by dependabot[bot] 0
  • Bump room-runtime from 2.3.0 to 2.4.3

    Bump room-runtime from 2.3.0 to 2.4.3

    Bumps room-runtime from 2.3.0 to 2.4.3.

    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)
    dependencies 
    opened by dependabot[bot] 0
Releases(v1.0.0-alpha01)
  • v1.0.0-alpha01(Feb 3, 2021)

    This is the early version of Expenso Android application.

    Features

    • Transaction Dashboard
    • All Income and Expense list
    • Create a new Transaction
    • Update/delete Transaction
    • Dark Mode/Light Mode support.
    • Share Transaction as Text and Image etc.

    A Minimalistic Expense tracker application to track all your Income and Expense without any hassle!

    Add ons features like Charts & Payment Reminder are currently WIP 🚧

    Source code(tar.gz)
    Source code(zip)
    Expenso.apk(5.26 MB)
Owner
Sanju S
GDE for Android πŸ“± & Product Designer 🎨 | Open Source Contributor 🌟 | Kotlin & Java β™₯️| Tech Youtuber πŸ‘¨πŸ»β€πŸ’»
Sanju S
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...

Isaias Cuvula 23 Dec 5, 2022
πŸ“ 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

Raghav Aggarwal 89 Dec 23, 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. Also, It uses some of Jetpack and popular libraries. These are Kotlin Coroutine-Flow, kotlinx.serialization, Hilt, Compose, Accompanist, Retrofit2, OkHttp3, Chucker, MockWebServer, Truth.

Tolga Bolatcan 13 Nov 2, 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

Areg Petrosyan 42 Dec 23, 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

Emre YILMAZ 6 Aug 19, 2022
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

Jhonatan Iberico 0 Dec 17, 2021
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

Hamdy Abd El Fattah 15 Dec 10, 2022
MVVM ,Hilt DI ,LiveData ,Flow ,Room ,Retrofit ,Coroutine , Navigation Component ,DataStore ,DataBinding , ViewBinding, Coil

MVVM ,Hilt DI ,LiveData ,Flow ,Room ,Retrofit ,Coroutine , Navigation Component ,DataStore ,DataBinding , ViewBinding, Coil

Ali Assalem 12 Nov 1, 2022
Kotlin, MVVM, Navigation Component, Hilt, Jetpack Compose, Coroutine, MutableState, Retrofit2, Glide

MVVM-RecipeApp Kotlin, MVVM, Navigation Component, Hilt, Jetpack Compose, Coroutine, MutableState, Retrofit2, Glide Main Features Kotlin MVVM Jetpack

Ali Assalem 5 Jul 28, 2022
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.

null 4 Nov 29, 2022
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

Kibet 14 Sep 2, 2022
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

null 1 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, Data and views are two-way bound.

fangbing chen 7 Jul 5, 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.

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

IvΓ‘n Carballo 3.4k Dec 21, 2022
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

Deepanshi bajaj 25 Nov 29, 2022
The projet demonstrate the usage of having a contract between our api responses and ui objects to eliminate dependency of both on each other.

WeatherDomainLayerSampleApp The projet demonstrate the usage of having a contract between our api responses and ui objects to eliminate dependency of

Saurabh Pant 9 Dec 14, 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.

Odhiambo Brandy 4 Apr 15, 2022
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

Umer Javaid 0 Jan 30, 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

Mina Mikhail 103 Dec 2, 2022