https://github.com/nour5eldin/github_repository_odc_amit
Github Repository
https://github.com/nour5eldin/github_repository_odc_amit
android-development clean-architecture compose coroutines-flow data-store-preferences kotlin mapping mvvm-architecture navigation-component retrofit2-kotlin room-database sold-principle
Last synced: 3 months ago
JSON representation
Github Repository
- Host: GitHub
- URL: https://github.com/nour5eldin/github_repository_odc_amit
- Owner: Nour5Eldin
- Created: 2024-10-14T05:38:05.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2024-10-20T15:18:53.000Z (8 months ago)
- Last Synced: 2025-03-30T00:12:41.564Z (3 months ago)
- Topics: android-development, clean-architecture, compose, coroutines-flow, data-store-preferences, kotlin, mapping, mvvm-architecture, navigation-component, retrofit2-kotlin, room-database, sold-principle
- Language: Kotlin
- Homepage:
- Size: 651 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# Github Repository By ODC & AMIT
Github Repository Android Application Building with Latest Technology & Advanced Android Topics at AMIT Learing & Orange Degital Center InternShip.## Technology Used
- **Kotlin**: A modern programming language for Android development.
- **Jetpack Compose**: Android’s modern toolkit for building native UI.
- **MVVM Architecture**: Clean architecture pattern to separate business logic from the UI layer.
- **Hilt**: Dependency injection framework for managing app-level dependencies.
- **Retrofit**: Type-safe HTTP client for making API requests.
- **Room**: A persistence library for local data storage.
- DataStore: A simple, modern data storage solution that allows storing key-value pairs or typed objects.
- **Coroutines & Flow**: For asynchronous programming and handling streams of data.
- **Gson**: A library for JSON serialization and deserialization.
- **Coil**: Image loading library for Kotlin that uses Coroutines.
- **Lottie**: For rendering animations from Adobe After Effects.
- **Chucker**: HTTP inspector for debugging network requests.
- **Mockk**: Mocking library for testing Kotlin code.## Features
1. **Shimmer Effect For Loading State**:
- The app uses a Shimmer Effect to provide a smooth visual loading state while fetching data from the API.- When the user navigates to the Repo List Screen, a shimmer animation is displayed, mimicking the layout of the repository items until the data is fully loaded from the API.
2. **Repo List Screen**:
- Fetches a list of repositories from a REST API (e.g., GitHub API) using Retrofit.
- Each repository is displayed in a list, showing:
- Repository Name
- Owner's Avatar
- Star Count
- Fork Count
- Description- Tapping on a repository navigates the user to the Repo Details Screen.
3. **Repo Details Screen**:
- Displays detailed information about a selected repository, including:
- Repository Image: Shows the owner's avatar or repository image.
- Repository Name: Clearly visible at the top.
- Stars Count: Total number of stars the repository has received.
- Forks Count: Total number of times the repository has been forked.
- Description: Detailed description of the repository.
- Created Date: The date when the repository was created Also provides a button to navigate to the Repo Issues Screen.4. **Repo Issues Screen**:
- Lists the issues related to the selected repository:
- Issue Title
- Status: Whether the issue is Open or Closed.
- Created Date: When the issue was created.
- Closed Date (if applicable): Displays when the issue was closed if it’s resolved.
- Issues are fetched dynamically via an API request using Retrofit and displayed in a list format.
- The screen also supports the Shimmer Effect for loading states while the issue data is fetched.5. **Error Screen - No WiFi/Network Unavailable**:
- When there is no internet connection, an error screen is displayed indicating that the network is unavailable.
- The app checks for the network status using ConnectivityManager and shows a user-friendly error message when the device is offline.
- A retry button is available, allowing users to attempt reconnecting when the network is restored.
- In the event of no network, the app falls back to cached data using DataStore for the Repo List:
- The last successfully fetched list of repositories is stored and displayed.
- If cached data exists, the app displays the cached repositories so users can still view them while offline.
- If no cached data is available, a message is shown to inform the user that no data is available offline.
## Screen shots
My Splash Screen
![]()
Shimmer Screen
![]()
Repository List Screen
![]()
Repository Details Screen
![]()
Repository Issues Screen
![]()
Network Error Screen
![]()
## Installing project
Clone the project
```bash
git clone https://github.com/Nour5Eldin/GitHub_Repository_ODC_AMIT.git
```## License
[MIT](https://img.shields.io/badge/Mit-Licence-mintgreen)