➡️ Simple Blog Feed App is a Native Android App that I built to show and apply the concepts of building apps that have
- Clean Architecture
- Lifecycle Management
- Loosely Coupled Modules
- Easy and Efficient Threading
- Data Independency from UI Changes and Lifecycle
- More Felxibility and Maintainability
➡️ And I was able to accomplish the above requirements using
- Java Programming Language
- Android MVVM Architecture Pattern
- RxJava with RxAndroid
- REST APIS with Retrofit
- JSONPlaceholder (Free fake API for testing and prototyping.)
➡️ Finally I merged all of the above in an Blog Feed App that allows the user to
- Browse the blog feed for the latest posts by users
- View all posts posted by specific user
- View other users accounts and their contact data
- Add / Edit / Delete Posts
➡️ In order to build and structure my project correctly and effeciently, I read, studied and followed the official documentation by google for
- App Architecture: https://developer.android.com/topic/architecture
- UI Layer: https://developer.android.com/topic/architecture/ui-layer
- Data Layer: https://developer.android.com/topic/architecture/data-layer
- View binding: https://developer.android.com/topic/libraries/view-binding
- ViewModel: https://developer.android.com/topic/libraries/architecture/viewmodel
➡️ Also I checked the source code for some popular open-source projects that use the same approach
- Jetpack MVVM Best Practice: https://github.com/KunMinX/Jetpack-MVVM-Best-Practice
- android mvvm architecture: https://github.com/janishar/android-mvvm-architecture
System Block Diagram | Project Files Structure |
---|---|
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
- Retrofit 2: https://github.com/square/retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'
- RXJava 3: https://github.com/ReactiveX/RxAndroid
- RXAndroid: https://github.com/ReactiveX/RxJava
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'com.github.bumptech.glide:glide:4.13.0'