A simple news app that allows users to get headlines based on their preferences and search articles.
- Code Architecture (MVVM)
- Jetpack Compose
- Clean Architecture
- Modularization
- Flow & StateFlow to give view the data and notify it when a change occurs.
- Dagger-hilt to handle dependency injection.
- Co-routines to deal with threads.
- Retrofit2 & OkHttp3 to handle apis requests.
- Room DataBase to cache the data and display it in case there is no internet
- Coil to load images from internet.
On the first launch, users choose a favorite country and 3 categories to personalize their experience. This data is stored locally for future sessions.
The headlines screen fetches and displays the latest articles from the user's chosen country and categories. Articles are sorted by date and tapping opens the URL in a web browser.
Users can search for articles across all categories or filter results. Search results also open externally for a better reading experience. Saved articles are stored locally.
Room is used to cache API responses and save favorite articles for offline access. This improves performance and user experience when connectivity is limited.
- Arabic localization to support additional languages/regions
- Offline caching of images for improved offline mode
- In-app article viewing instead of external browser