A mobile browser with tabs. Genius?
- Minimum SDK level 21
- Kotlin based, Coroutines + Flow for asynchronous.
- Jetpack
- Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
- ViewModel: Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
- DataBinding: Binds UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
- Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
- Hilt: for dependency injection.
- WorkManager: WorkManager allows you to schedule work to run one-time or repeatedly using flexible scheduling windows.
- Architecture
- MVVM Architecture (View - DataBinding - ViewModel - Model)
- Repository Pattern
- Retrofit2 & OkHttp3: Construct the REST APIs and paging network data.
- gson: A Java serialization/deserialization library to convert Java Objects into JSON and back.
- Material-Components: Material design components for building ripple animation, and CardView.
- Coil: Image loading for Android and Compose Multiplatform.
- zxing: ZXing ("Zebra Crossing") barcode scanning library for Java, Android.
- zxing-android-embedded: Barcode scanner library for Android, based on the ZXing decoder.
This App is based on the MVVM architecture and the Repository pattern, which follows the Google's official architecture guidance.
The overall architecture of this App is composed of two layers; the UI layer and the data layer. Each layer has dedicated components and they have each different responsibilities.