/AndroidArchitectureBestPracticesSample

Sample Android Application developed using feature modularisation approach. Mainly focused on scalability, testability and maintainability. Written in Kotlin. Using Jetpack Libraries

Primary LanguageKotlinApache License 2.0Apache-2.0

AndroidArchitectureBestPracticesSample

Sample Android Application developed using feature modularisation approach. Mainly focused on scalability, testability and maintainability. Written in Kotlin. Using Jetpack Libraries

Environment SetUp

This is developed using Android Studio Artic Fox and gradle plugin 7.0.3 which require Jdk 11 for compilation. Add movie db api key in local.properties API_KEY = your api key

Tech-stack

This project uses below libraries.

Dependencies

  • Jetpack:
    • Android KTX - provide concise, idiomatic Kotlin to Jetpack and Android platform APIs.
    • AndroidX - major improvement to the original Android Support Library, which is no longer maintained.
    • Lifecycle - perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
    • LiveData - lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
    • Navigation - helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
    • Room - persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
    • ViewModel - designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
  • Coroutines - managing background threads with simplified code and reducing needs for callbacks.
  • Retrofit - type-safe HTTP client.
  • Koin - Depndency Injection

Test dependencies

  • Espresso - to write concise, beautiful, and reliable Android UI tests
  • JUnit - a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
  • Mockito - Tasty mocking framework for unit tests
  • AndroidX - the androidx test library provides an extensive framework for testing Android apps.

Demo