Skip to content

Prerequisite

Learn more about what does this codebase do to help improve Android Application Development.

Libraries and technologies

Libraries and technologies used in this CodeBase are:

Tool Name Version
Platform Android OS 5 Lollipop Level 21 or higher
Programming Language Kotlin JDK 8.x
Architecture Model View ViewModel
Rest Response JSON
Local Database SQLite
View Injection ViewBinding
Obfuscation Proguard
Reactive Programming RxJava Latest version
JSON Parser GSON Convert using Retrofit2Gson Converter latest version
HttpClient OkHttpClient with Retrofit Okhttp v Latest version, Retrofit latest version, Logging Interceptor latest version
Local Database Framework Room Latest version
Shared Preference Armadillo Latest version
Camera CameraX Latest version
Design Guideline Material Component Latest version
Animation Lottie Latest version
Loading shimmer Shimmer Latest version
Error Handling ACRA Latest version
Dependency Injection Koin Latest version
Image Loader Glide Latest version
Logging Timber Latest version
SMS Verification Google auth API Phone Latest version
Root Detection RootBeer Latest version
Emulator Detection EmulatorDetector Latest version
Dialog Material Dialog Latest version
Image Compression Compressor Latest version

Recommendation

For running or using the codebase in your Android Project, it is recommended to use:

  • Android Studio Arctic Fox or higher
  • Kotlin 1.7.0 or higher
  • Gradle 7.2.0 or higher
  • Kotlin 1.7.0 or higher

This is to support the current SDKs and libraries used inside the codebase. Using any other version that not supported may include some unwanted consequence.

Learning the modules

As from 0.4.0 our codebase are now modular, which mean now you can use either one or all of the modules simultaneously. It enables you to migrate your existing project to using our codebase more easier. You can start by implementing one module, and then another, and then another.

It also increases our focus to develop more features based on specific module. So now, let's learn about what are the modules in our codebase:

Data

This module define configuration for your data needs. It included with base class for:

  • Retrieving data from web service (API) using Retrofit
  • Local database using Room
  • SharedPreference using secured preference
  • ViewModel

Presentation

This module define configuration for presentation needs. It included with base class for:

  • Activity
  • Fragment
  • RecyclerView Adapter and ViewHolder (embedded with endless scrolling)
  • CameraX Implementation with use cases for scanning QR and storing image
  • ViewPagerAdapter
  • User input validation

Service

This module define configuration for Mobile Service (GMS or HMS) features. It included classes for:

  • Handling Analytics custom event, user properties, and userId
  • Handling authentication using Google, Twitter, Microsoft, Github, and Yahoo
  • Base Service class for Cloud Messaging
  • Handling Remote Config Value
  • Handling Dynamic Link
  • Handling listener for In-App Messaging

Utils

This module define global function and utilities for application. It defines:

  • Custom Error handler
  • Extension function for date, ImageView, etc.
  • Global method for things like displaying dialog, and security
  • SMS verification
  • Base Application class