Skip to content

ishan007/LedgerApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LedgerApp

User will be able to see the list of his delieveries. This app has three screens, splash screen, listing screen and detail screen. User will see the list of deliveries with minimum information on listing screen. He can then select the items on list screen to see it in detail. On detail screen user will see the detail information of the selected delivery and he can mark that delivery as favorite.

Splash Screen List Screen Detail Screen

Architecture

App is built using Clean Architecture and MVVM.

Architecture

  • DI: This module is responsible for providing dependencies to the objects.

  • View: This module is responsible for populating data and error on UI. It includes activities, fragments and adapters.

  • ViewModel: This module is responisble for fetching data from domain layer, maintaining data state and providing data to view moudel. It includes ViewModels and custom observers.

  • Repository: This module provides data from single source of truth to domain layer. It has access to local datasource(A layer which interacts with database layer) and remote datasource(A layer which interacts with webservice layer). Repository uses local datasource as single source of truth. Repository have folowing submodules -

    * Domain: This module is responsible for performing business logics. It has all the usecases application requires.

    * Storage: This module is resposible for providing data and performing curd operation in to local data base using Room Library

    * Network: This module is responsible for fetching data from webserivices using Retrofit 2: library

Android architecture components used in this application are -

  • ViewModel: Designed to store and manage UI related data in a life cycle conscious way

  • Live Data: An observable data holder class that, unlike a regular observable, is life cycle aware, meaning it respects the lifecycle of other app components such as activities, fragments, and services

  • Paging Library: The Paging Library helps you load and display small chunks of data at a time. Loading partial data on demand reduces usage of network bandwidth and system resources. In this app PagedList.BoundaryCallback is used for syncing data from server in to database.

  • Room: Provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.

Third party libaries used in this application are -

  • Dagger 2: Dagger is compile-time dependency injection framework provided by google.

  • RxJava 2: Reactive Extensions for the Java Virtual Machine (JVM) – a library for composing asynchronous and event-based programs using observable sequences for the JVM.

  • Retrofit 2: A type-safe HTTP client for Android and Java

  • Mockito: A mocking framework for unit testing. The Mockito library enables mock creation, verification and stubbing.

  • Glide: Glide is a fast and efficient image loading library for Android focused on smooth scrolling. Glide offers an easy to use API, a performant and extensible resource decoding pipeline and automatic resource pooling.

Language Used -

  • Kotlin: Kotlin is a great fit for developing Android applications, bringing all of the advantages of a modern language to the Android platform without introducing any new restrictions.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages