{"id":18601365,"url":"https://github.com/hojat72elect/gamehub","last_synced_at":"2025-04-10T19:30:37.421Z","repository":{"id":65118598,"uuid":"574228468","full_name":"hojat72elect/GameHub","owner":"hojat72elect","description":"An Expo-managed React Native application for browsing video games and checking the latest gaming news from around the world.","archived":false,"fork":false,"pushed_at":"2024-05-23T06:04:07.000Z","size":30674,"stargazers_count":12,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-23T06:40:06.264Z","etag":null,"topics":["android","android-application","expo","game","news","react","react-native","twitch","typescript"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hojat72elect.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","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":"2022-12-04T20:14:46.000Z","updated_at":"2024-05-23T06:04:10.000Z","dependencies_parsed_at":"2023-02-18T03:45:40.905Z","dependency_job_id":"66955285-ba8c-4c84-ade4-d0758b552a84","html_url":"https://github.com/hojat72elect/GameHub","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hojat72elect%2FGameHub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hojat72elect%2FGameHub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hojat72elect%2FGameHub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hojat72elect%2FGameHub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hojat72elect","download_url":"https://codeload.github.com/hojat72elect/GameHub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281395,"owners_count":21077423,"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","android-application","expo","game","news","react","react-native","twitch","typescript"],"created_at":"2024-11-07T02:08:06.500Z","updated_at":"2025-04-10T19:30:35.316Z","avatar_url":"https://github.com/hojat72elect.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `GameHub` Android app\n\n----\nRight now, we're in the process of migrating this app from a native Android app,\nto a Kotlin Multiplatform app.\nFeel free to collaborate with us.\n----\n\n\n[![Build](https://github.com/hojat72elect/GameHub/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/hojat72elect/GameHub/actions/workflows/build.yml)\n\nThis is an Android client for \u003ca href=\"https://www.igdb.com/\"\u003eIGDB\u003c/a\u003e\nand \u003ca href=\"https://dev.twitch.tv/\"\u003eTwitch\u003c/a\u003e APIs for all the latest news and information about\nvideo games.\n\nThe trello board I use for keeping track of all the tickets of this project is shared in here:\nhttps://trello.com/b/lG03zl6P/game-news-app\n\n![Min API](https://img.shields.io/badge/API-21%2B-orange.svg?style=flat)\n[![Platform](https://img.shields.io/badge/platform-Android-green.svg)](http://developer.android.com/index.html)\n\nApp's UI and presentation layer are built entirely using the Jetpack Compose.\n\n## Contents\n\n* [Demonstration](#demonstration)\n    * [Videos](#videos)\n    * [Screenshots](#screenshots)\n* [Tech Stack](#tech-stack)\n* [Architecture](#architecture)\n* [Development Setup](#development-setup)\n    * [IGDB](#igdb)\n    * [Gamespot](#gamespot)\n* [Contributors](#Contributors)\n* [Questions](#questions)\n\n## Demonstration\n\n### Videos\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDemo 1\u003c/b\u003e\u003c/summary\u003e\n\n\nhttps://user-images.githubusercontent.com/14782808/111520186-88671800-8760-11eb-8995-8e45a5cd9213.mp4\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDemo 2\u003c/b\u003e\u003c/summary\u003e\n\n\nhttps://user-images.githubusercontent.com/14782808/111520260-9b79e800-8760-11eb-9665-1062ed2b2c24.mp4\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDemo 3\u003c/b\u003e\u003c/summary\u003e\n\n\nhttps://user-images.githubusercontent.com/14782808/111520365-b187a880-8760-11eb-9dbe-0ffc44635ef8.mp4\n\u003c/details\u003e\n\n### Screenshots\n\n\u003cp\u003e\n\u003cimg src=\"/media/screenshot1.png\" width=\"32%\" alt=\"An screen shot of the app\"/\u003e\n\u003cimg src=\"/media/screenshot2.png\" width=\"32%\" alt=\"An screen shot of the app\"/\u003e\n\u003cimg src=\"/media/screenshot3.png\" width=\"32%\" alt=\"An screen shot of the app\"/\u003e\n\u003c/p\u003e \n\u003cp\u003e \n\u003cimg src=\"/media/screenshot4.png\" width=\"32%\" alt=\"An screen shot of the app\"/\u003e\n\u003cimg src=\"/media/screenshot5.png\" width=\"32%\" alt=\"An screen shot of the app\"/\u003e\n\u003cimg src=\"/media/screenshot6.png\" width=\"32%\" alt=\"An screen shot of the app\"/\u003e\n\u003c/p\u003e\n\n## Tech Stack\n\n- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android\n  development.\n- [Jetpack Compose](https://developer.android.com/jetpack/compose) - Android’s modern toolkit for\n  building native UI.\n- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)\n  and [Flow](https://kotlinlang.org/docs/reference/coroutines/flow.html#asynchronous-flow) -\n  Official Kotlin's tooling for performing asynchronous work.\n- [MVVM/MVI Architecture](https://developer.android.com/jetpack/guide) - Official recommended\n  architecture for building robust, production-quality apps.\n- [Android Jetpack](https://developer.android.com/jetpack) - Jetpack is a suite of libraries to help\n  developers build state-of-the-art applications.\n    - [Navigation Compose](https://developer.android.com/jetpack/compose/navigation) - Navigation\n      Compose is a framework for navigating between composables while taking advantage of the\n      Navigation component’s infrastructure and features.\n    - [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - The\n      ViewModel is designed to store and manage UI-related data in a lifecycle conscious way.\n    - [StateFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow#stateflow) -\n      StateFlow is a state-holder observable flow that emits the current and new state updates to\n      its collectors.\n    - [Room](https://developer.android.com/topic/libraries/architecture/room) - The Room library\n      provides an abstraction layer over SQLite to allow for more robust database access.\n    - [DataStore](https://developer.android.com/topic/libraries/architecture/datastore) - DataStore\n      is a data storage solution that stores key-value pairs or typed objects\n      with [protocol buffers](https://developers.google.com/protocol-buffers).\n    - [Dagger Hilt](https://developer.android.com/training/dependency-injection/hilt-android) - Hilt\n      is a dependency injection library for Android.\n    - [MotionLayout](https://developer.android.com/training/constraint-layout/motionlayout) -\n      MotionLayout allows you to create beautiful animations in your app without too much hassle.\n    - [Custom Tabs](https://developers.google.com/web/android/custom-tabs/implementation-guide) -\n      Custom Tabs is a browser feature that gives apps more control over their web experience.\n- [Accompanist](https://github.com/google/accompanist) - A collection of extension libraries for\n  Jetpack Compose.\n- [Lottie](http://airbnb.io/lottie/#/README) - A multiplatform UI library for parsing Adobe After\n  Effects animations exported as JSON.\n- [OkHttp](https://github.com/square/okhttp) - An HTTP client for making network calls.\n- [Retrofit](https://github.com/square/retrofit) - A library for building REST API clients.\n- [KotlinX Serialization](https://github.com/Kotlin/kotlinx.serialization) - A multiplatform Kotlin\n  serialization library.\n- [Coil](https://github.com/coil-kt/coil) - An image loading library.\n- [Hilt Binder](https://github.com/mars885/hilt-binder) - An annotating processing library that\n  automatically generates Dagger Hilt's `@Binds` methods.\n- [Kotlin Result](https://github.com/michaelbull/kotlin-result) - A multiplatform Result monad for\n  modelling success or failure operations.\n- [Testing](https://developer.android.com/training/testing) - The app is currently covered with unit\n  tests and instrumentation tests.\n    - [JUnit](https://junit.org/junit5) - JUnit is a unit testing framework for the Java programming\n      language.\n    - [Truth](https://github.com/google/truth) - Truth is a library providing fluent assertions for\n      Java and Android.\n    - [MockK](https://github.com/mockk/mockk) - MockK is a mocking library for Kotlin.\n    - [Coroutines Test](https://github.com/Kotlin/kotlinx.coroutines/tree/master/kotlinx-coroutines-test)\n        - A library\n          for testing Kotlin coroutines.\n    - [Turbine](https://github.com/cashapp/turbine) - A testing library for Kotlin Flows.\n    - [Dagger Hilt Test](https://developer.android.com/training/dependency-injection/hilt-testing) -\n      A testing library for modifying the Dagger bindings in instrumented tests.\n    - [Room Testing](https://developer.android.com/training/data-storage/room/migrating-db-versions#test)\n        - A library\n          for testing Room migrations.\n    - [MockWebServer](https://github.com/square/okhttp/tree/master/mockwebserver) - A scriptable web\n      server for testing HTTP clients.\n- [Napier](https://github.com/AAkira/Napier) - Kotlin Multiplatform logging library.\n- [Gradle's Kotlin DSL](https://docs.gradle.org/current/userguide/kotlin_dsl.html) - Gradle’s Kotlin\n  DSL is an alternative syntax to the Groovy DSL with an enhanced editing experience.\n- [buildSrc](https://docs.gradle.org/current/userguide/organizing_gradle_projects.html#sec:build_sources)\n    - A special\n      module within the project to manage dependencies and whatnot.\n\nFor more information about used dependencies, see [this](/buildSrc/src/main/java/Dependencies.kt)\nfile.\n\n## Architecture\n\n![architecture](/media/architecture.png)\n\n## Development Setup\n\nYou'll need to supply API/client keys for the various services that the app uses in order to build\nthe application.\n\n### IGDB\n\n[IGDB](https://www.igdb.com/discover) is a website dedicated to combining all the relevant\ninformation about games into a comprehensive resource for gamers everywhere. This is the main API\nthat the app uses to fetch information about pretty much any video game there is.\n\n### Gamespot\n\n[Gamespot](https://www.gamespot.com/) is a video gaming website that provides news, reviews,\npreviews, downloads, and other information on video games. The app uses its API to solely retrieve\nthe latest news in the gaming world.\n\n## Questions\n\nIf you have any questions regarding the codebase or have found an issue, please open up an issue on\nGitHub repository.\nI'll answer to all opened issues as fast as I can.\n\n### Contributors\n\nMain developer: [Hojat Ghasemi](mailto:hojat72elect@gmail.com)\n\u003cbr/\u003e\nApp icon designer: [Grace Peterson](mailto:gracepeterson2@outlook.com)\n\u003cbr/\u003e\nRussian translations: [Daria Vinogradova](mailto:herrwerner278@gmail.com)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhojat72elect%2Fgamehub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhojat72elect%2Fgamehub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhojat72elect%2Fgamehub/lists"}