{"id":25789155,"url":"https://github.com/muhammedrefaatmetwally/route-android-task","last_synced_at":"2026-05-10T12:47:26.238Z","repository":{"id":248182410,"uuid":"827968678","full_name":"MuhammedRefaatMetwally/Route-Android-Task","owner":"MuhammedRefaatMetwally","description":"Simple App that  Fetch Products","archived":false,"fork":false,"pushed_at":"2024-07-15T22:04:22.000Z","size":1475,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-17T00:52:16.838Z","etag":null,"topics":["android","clean-architecture","googlematerialdesign","hilt-dependency-injection","logging","material-design","mvvm-architecture","picasso","retrofit2","xml"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MuhammedRefaatMetwally.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-12T19:21:35.000Z","updated_at":"2024-07-15T22:04:25.000Z","dependencies_parsed_at":"2024-07-15T00:23:42.817Z","dependency_job_id":"ae984c0a-3671-4109-a55e-641e7d6a468e","html_url":"https://github.com/MuhammedRefaatMetwally/Route-Android-Task","commit_stats":null,"previous_names":["muhammedrefaatmetwally/route-android-task"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammedRefaatMetwally%2FRoute-Android-Task","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammedRefaatMetwally%2FRoute-Android-Task/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammedRefaatMetwally%2FRoute-Android-Task/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammedRefaatMetwally%2FRoute-Android-Task/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MuhammedRefaatMetwally","download_url":"https://codeload.github.com/MuhammedRefaatMetwally/Route-Android-Task/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241006761,"owners_count":19892944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","clean-architecture","googlematerialdesign","hilt-dependency-injection","logging","material-design","mvvm-architecture","picasso","retrofit2","xml"],"created_at":"2025-02-27T11:18:39.752Z","updated_at":"2026-05-10T12:47:21.202Z","avatar_url":"https://github.com/MuhammedRefaatMetwally.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Products App\n\nThis project is an Android application that displays a list of products. The app follows Clean Architecture principles and uses Retrofit for network operations, Hilt for dependency injection, and includes unit tests. The UI is built using Fragments and XML layouts.\n\n## Table of Contents\n\n- [Architecture](#architecture)\n- [Libraries Used](#libraries-used)\n- [Setup](#setup)\n- [Usage](#usage)\n- [Features](#features)\n- [Unit Testing](#unit-testing)\n- [Video](#video)\n- [Contributing](#contributing)\n- [Contacts](#contacts)\n\n## Architecture\n\nThis project follows Clean Architecture, which separates the code into different layers which includes Repository Pattern and MVVM:\n\n1. **Domain Layer**: Contains business logic and use cases.\n2. **Data Layer**: Handles data operations, including network calls and data caching.\n3. **Presentation Layer**: Includes ViewModels, Fragments, and UI components.\n\n## Libraries Used\n\n- [Retrofit](https://square.github.io/retrofit/): For making network requests.\n- [Hilt](https://dagger.dev/hilt/): For dependency injection.\n- [LiveData](https://developer.android.com/topic/libraries/architecture/livedata): For observable data.\n- [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel): For managing UI-related data.\n- [Coroutines](https://developer.android.com/kotlin/coroutines): For asynchronous programming.\n- [JUnit](https://junit.org/junit5/): For unit testing.\n- [Mockito](https://site.mockito.org/): For mocking in tests.\n- [Picasso](https://square.github.io/picasso/): For loading images.\n\n\n## Setup\n\nTo run this project, follow these steps:\n\n1. **Clone the repository:**\n\n    ```sh\n    git clone https://github.com/yourusername/products-app.git\n    cd products-app\n    ```\n\n2. **Open the project in Android Studio:**\n\n    ```sh\n    open -a \"Android Studio\".\n    ```\n\n3. **Sync the project with Gradle files** by clicking on the `Sync Now` button in the banner at the top of the IDE.\n\n4. **Build and run the app** on an emulator or physical device by clicking the `Run` button.\n\n## Usage\n\nTo use the app, follow these steps:\n\n1. Launch the app on your device or emulator.\n2. The app will display a splash screen followed by a list of products.\n3. You can click on a product to view its details.\n\n## Features\n\n- **Display Products List**: Fetches and displays a list of products from a remote API.\n- **Error Handling**: Displays appropriate messages for network errors.\n- **Loading Indicators**: Shows a Shimmer Effect while data is being fetched.\n\n## Unit Testing\n\nThe project includes unit tests for the ViewModel and use cases.\n\n- **Running Tests:**\n  \n    1. Open the `test` directory in Android Studio.\n    2. Right-click on the `com.example.route_task` package and select `Run Tests`.\n\n## Pictures of Design:\n## Splash:\n![image](https://github.com/user-attachments/assets/4985aa9f-280a-482a-93d2-862b5b35ded9)\n\n## ShimmerEffect:\n![Screenshot 2024-07-12 210936](https://github.com/user-attachments/assets/93b6cf8d-ba29-40a9-b653-9a3ef4c0f737)\n\n## ProductsList:\n![Screenshot 2024-07-13 173718](https://github.com/user-attachments/assets/a7a21ad2-50f4-4ef1-b235-4e473a702423)\n\n\n## Video:\n\nhttps://github.com/user-attachments/assets/0117aa5b-6349-4d2b-8ab0-5f1dfb0e451c\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n1. Fork the repository.\n2. Create a new branch with a descriptive name.\n3. Make your changes.\n4. Submit a pull request.\n\n## Contacts\nYou are welcome to contact me and send your feedback to my gmail: muhammedrefaat2020@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuhammedrefaatmetwally%2Froute-android-task","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuhammedrefaatmetwally%2Froute-android-task","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuhammedrefaatmetwally%2Froute-android-task/lists"}