Contacts What it does? Shows list of contacts in the phone. You can see the contact details(number, email, etc) by clicking a contact. You can add a contact(which may include email, image, etc). You can delete a contact. Contacts lists syncs itself as soon as you add or delete a contact either from this app or any other app. Libraries Used? Dagger -> For Dependency Injection. Gson -> For Serialization/Deserialization Kotlinx-coroutines-android -> For Async Work Permissionsdispatcher -> For Runtime Permissions EventBus -> For publish/subscribe event But what about design pattern and best coding practices? Follows MVVM(Model-View-ViewModel) pattern. Follows Dependency Injection principle. Every class follows Single Responsibility Principle. Anything else? Proguard enabled and optimized to reduce method cound, shrink resources and reducing APK Size. Handles Runtime Permission ScreenShots Apk You can download the release apk from (https://github.com/AshuTyagi16/Contacts/blob/master/app/release/app-release.apk)