NewsCompose
MVVM News Application with Jetpack Compose
Install / Use
/learn @AhmedGamalRamadan/NewsComposeREADME
News App in Kotlin using Jetpack Compose
Description
The News App is a mobile application developed using Kotlin and Jetpack Compose. It's designed to fetch news articles from a provided API and display them in a user-friendly interface. The application follows the MVVM (Model-View-ViewModel) architecture pattern to ensure separation of concerns and maintainability.
Features:
- Jetpack Compose: The app leverages Jetpack Compose, a modern Android UI toolkit, to create a seamless and interactive user experience.
- Kotlin: Developed entirely in Kotlin, the codebase benefits from the conciseness and expressiveness of the language, promoting efficient and readable code.
- Shimmer Effect: Utilizes the shimmer effect to provide users with visual feedback while content is loading, enhancing the overall user experience by reducing perceived loading times.
- Retrofit: Fetches news articles from an API.
- Dependency Injection: Employing dependency injection enhances the app's maintainability and testability by decoupling components and facilitating easier component replacement and testing.
- Network Connectivity Check: The app includes functionality to check for network connectivity, ensuring a seamless experience by handling scenarios where the device may be offline or have limited connectivity.
- Implements MVVM architecture for clean and organized code.
Architecture block diagram
Installation
- Clone the Repository: Clone this repository to your local machine.
- Open in Android Studio: Open the project in Android Studio.
- Build and Run: Build and run the project on an Android device or emulator.
Usage
- Upon launching the app, users will be presented with a list of news articles.
- Users can tap on different categories buttons to filter news articles based on their interests.
- Further interactions with the app are still under development.
Demo
Watch the video demo here
Screenshots:
<table> <tr> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/cba3563e-dd67-40dc-99c1-512388bf5df8" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/bf640336-3449-493a-91e8-243213462e22" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/37339933-f9d6-4514-b0c4-93cb5f3819f7" alt="splash" width="230"></td> </tr> <tr> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/f3fd73d2-388b-41df-a8b2-834e65e54956" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/2f2ecfe4-18e2-469b-a46f-b9f80a8d10eb" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/91f9e5e8-8803-47b0-899c-5a90cf36479f" alt="splash" width="230"></td> </tr> <tr> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/cb7a2008-1e0a-49bd-8fbc-236c27a1f7c3" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/bb35b49e-46ce-4314-b44c-f3680726a5ee" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/c90dfbf5-0b1f-477c-addb-79b3c232679d" alt="splash" width="230"></td> </tr> <tr> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/014979a2-f45b-44af-85a6-b1ba857e575a" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/c0037ad3-b079-4cbe-b439-3fd2a8e5d731" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/990c75f1-779a-4b4b-b8c8-ab9a818f75f8" alt="splash" width="230"></td> </tr> <tr> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/3e62f33f-3d3b-4278-8e07-2d6cbf0ec522" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/7cd8ac1d-40ac-4aa8-869f-6a15456035f7" alt="splash" width="230"></td> <td><img src="https://github.com/AhmedGamalRamadan/NewsCompose/assets/144063315/79f45bed-a14c-48c9-8888-d37b252e0bfe" alt="splash" width="230"></td> </tr> </table>Connect with Me 🌐
Let's connect! Feel free to reach out on LinkedIn.
<p align="left"> <a href="https://www.linkedin.com/in/ahmed-gamal-ramadan/" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/linked-in-alt.svg" alt="https://www.linkedin.com/in/ahmed-gamal-97509328a/" height="30" width="40" /></a> </p>Related Skills
feishu-drive
341.6k|
things-mac
341.6kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
341.6kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver
