An android app to help you track your bills. It is built with the clean architecture principles in mind while following the MVVM repository pattern and powered by Architecture Components.
For better abstration, we split the application into three layers spread across two distinct modules. This ensures robustness and makes our app extensible. The two modules are:
- :core
- :app
The :app modules contains the UI layer while the :core module contains the domain and the data layer. This three layered architecture is inspired by the Clean Architecture design pattern
The app module holds the framework
and the presentation
packages. The framework
package holds non-core-ui implementations while the presentation
layer is dedicated to core UI implementations.
The presentation layer use ViewModel
to manage application state and data-binding
to hook ViewModels to reactive views.
The core module holds the domain and data layers.
The domain layer
defines data classes that are used to bridge the data needs of the data and presentation layer. It also defines the UseCases
that the presentation layer reuses for various accessibility and manipulation of the data.
The data layer
holds the the data entity that implements our core business needs. It uses distinct datasources
abstracted away by a repository to ensures a single channel for accessing and manipulation of the data.
The following Libraries are used in the application:
- Android Jetpack
- Room Database - Used for local data storage.
- Navigation Component - Elegantly handle navigation using the one Activity/multiple fragment pattern
- Data Binding - Used in combination with ViewModel to provide support for reactive views
- ViewModel - Manages the UI state and provide the bridge between the UI and Domain layer.
- WorkManager - Schedules repeating bills and reminds user when they are due.
- Hamcrest - Preferred assertion framework for tests to make our tests readable.
- Robolectric - Simulates tests that rely on the android framework.
- Glide - Preferred image loading library
- MPAndroidChat - To display beautifully crafted chats
- This is the fist version of the app and a lot of things are not optimal.
- This ReadMe is WIP, obvs.
Google Play and the Google Play logo are trademarks of Google LLC.