GitHub - nhickf/Simple-Android-App: This app follows the current android development standards. Uses MVI / MVVM , Repository , Clean Architecture , Solid Principles , Room , Flow , Compose

This project demonstrates modern Android development with Jetpack Compose, Hilt, Coroutines, Flow, Jetpack (Room, ViewModel), and Material 3 based on Clean architecture.

Tech stack & Open-source libraries

  • Minimum SDK level 24.
  • Kotlin based, utilizing Coroutines + Flow for asynchronous operations.
  • Jetpack Libraries:
    • Jetpack Compose: Android’s modern toolkit for declarative UI development.
    • Lifecycle: Observes Android lifecycles and manages UI states upon lifecycle changes.
    • ViewModel: Manages UI-related data and is lifecycle-aware, ensuring data survival through configuration changes.
    • Room: Constructs a database with an SQLite abstraction layer for seamless database access.
    • Hilt: Facilitates dependency injection.
  • Architecture:
    • MVVM Architecture (View - ViewModel - Model): Facilitates separation of concerns and promotes maintainability.
    • Repository Pattern: Acts as a mediator between different data sources and the application's business logic.
  • Kotlin Serialization: Kotlin multiplatform / multi-format reflectionless serialization.
  • ksp: Kotlin Symbol Processing API for code generation and analysis.
  • Coil Jetpack compose image loading library.
  • [Constraint Layout] For complex ui designs.

Architecture

Simple Android App adheres to the Clean MVVM architecture and implements the Repository pattern, aligning with Google's official architecture guidance.

  • Why follow Clean MVVVM architecture and Repository Pattern ? Because it will help you to build more scalable, testable and clean project structure in your application.

Challenges

  • Small time frame to build this application
    • Why? Because you need to analyze the project first, come up with the plan how you will create the application in scalable and testable way. Also Project configuration takes a lot of time.
  • Cache Mechanism
    • Why? You need to convert pojo to entity which tedious to do within small time frame
  • PDF Images
    • Why? It's unusual to see using pdf for image which needed custom decoder convert to bitmap so that we can show those images