- Kotlin with Jetpack compose
- MVVM with Clean Architecture
- Retrofit & Okhttp with connection and read timeout
- Dagger-Hilt for DI
- Coroutine and Flow
- Junit Unit test with Mockk library, Wrote unit test for UseCases, ViewModel, and Repository
- Room db for offline usage
- Dark and Light theming including status bar color update
- Corner cases like Internet status check, Pull to refresh
- Action bar with Sorting options default Recent
- Retry when the internet connects back and the News card click
- Used Roboto font family
- Glide compose library to cache and load images
![](https://private-user-images.githubusercontent.com/28126457/270446140-1d05f476-5909-4918-9530-4f3c6c370d61.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzYzNzMsIm5iZiI6MTcxOTEzNjA3MywicGF0aCI6Ii8yODEyNjQ1Ny8yNzA0NDYxNDAtMWQwNWY0NzYtNTkwOS00OTE4LTk1MzAtNGYzYzZjMzcwZDYxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5NDc1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE5MTdhNTc2MThhNTRhODU0YjE5OTgxZmQwMjFhZGY2ODk4N2U3ZmU3Y2Y3NDUxNTNjN2E0YTg3YTFlMGZhZWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.p3jRXahkz_8iVDQMutngpipVyZokssJUnwmc_hvmR7s)
![](https://private-user-images.githubusercontent.com/28126457/270446093-989e8dc8-9127-4cc7-a920-f8441c72ed56.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzYzNzMsIm5iZiI6MTcxOTEzNjA3MywicGF0aCI6Ii8yODEyNjQ1Ny8yNzA0NDYwOTMtOTg5ZThkYzgtOTEyNy00Y2M3LWE5MjAtZjg0NDFjNzJlZDU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5NDc1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY1NTRhYmI2MzlmZWVkOGExODAwMjAwMTg0YWQ5ZjQ3MDkyOGQ1OTA0ZDhiZTcxMzcxZWJhNTU1YzU3OWZiNmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tIhQCTi_VJFKbUyMwbt_CswaPEdf24qNCPJqQ_OtHoY)
![](https://private-user-images.githubusercontent.com/28126457/270446024-c3900d5b-1492-47ac-8b6d-617f2b3c601e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzYzNzMsIm5iZiI6MTcxOTEzNjA3MywicGF0aCI6Ii8yODEyNjQ1Ny8yNzA0NDYwMjQtYzM5MDBkNWItMTQ5Mi00N2FjLThiNmQtNjE3ZjJiM2M2MDFlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5NDc1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZiZDZiMTBiMzViNTY5Y2E3NGZkYjAwYTE1YjY2NWMwOWExNDJjMjU5Mzg1NDRiMzEwMjExYzRjMTJjODczMzImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.QPbk5rk7fw6LXfH7EV5A7PtlbXTmBpC8S1v9ZMV2p9s)
![](https://private-user-images.githubusercontent.com/28126457/270449061-fc257e9e-e6ad-402d-963b-b2061660126c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzYzNzMsIm5iZiI6MTcxOTEzNjA3MywicGF0aCI6Ii8yODEyNjQ1Ny8yNzA0NDkwNjEtZmMyNTdlOWUtZTZhZC00MDJkLTk2M2ItYjIwNjE2NjAxMjZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5NDc1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAxM2UyYTM3N2MxYWNhNzEyOWY4YWJlNzBiOWQ2OTQwMWY5ODQxNWZlZGIzNTU4OGUyMmYyZTNmOTljZDA3OTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.2O_HOpKYyRbCmjafXkhu0bJELTZgBaf-VQSnJit8OOA)