Skip to content

abalta/Kotlin-DynamicFeature-Clean

Repository files navigation

Project description

CircleCI Kotlin Version API Android Studio

This project is open source part for my ongoing development. I present modern Android application architecture that is modular with dynamic feature.

Project characteristics

This project brings to table set of best practices, tools, and solutions:

  • Modern architecture (feature modules, Clean Architecture, Model-View-ViewModel)
  • Android Jetpack
  • CI pipeline
  • Dependency Injection with Koin
  • Material design

Tech-stack

  • Libraries and Frameworks
    • Kotlin + Coroutines - perform background operations
    • Koin - dependency injection
    • Retrofit - networking
    • Jetpack
      • Navigation - deal with whole in-app navigation
      • LiveData - notify views about database change
      • Lifecycle - perform action when lifecycle state changes
      • ViewModel - store and manage UI-related data in a lifecycle conscious way
      • Room - persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
      • Pagination - 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.
      • Data Binding - allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
    • Stetho - application debugging tool
  • Architecture
  • Gradle

Getting Started

This project uses IGDB Api for fetching datas. You need to get Api key for services the app uses.

When you obtain the key, you can provide them to the app by putting the following in the gradle.properties project root file:

#IGDB API KEY
apiToken = <insert>

Architecture

Each module has own Clean Architecture layers.

  • :core module only responsible for implement common dependencies, holds remote (Retrofit) and cache (Room) repositories.
  • :onboarding module is install-time delivery feature module, this module install when app is downloaded. (Uninstall this module is upcoming development progress.)
  • :home module is install-time delivery feature module, this module install when app is downloaded.
  • :app this is simple application module, this is responsible for navigate feature modules.

Showroom - UI

OnboardingActivity

Module OnboardingFragments ViewPager2 - TabLayout MaterialAndroid SelectPlatformFragment
:onboarding

DashboardActivity

Module HomeFragment - BottomNavigationView Pagination - Horizontal RecyclerView NavigationComponent
:home

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages