Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hojat72elect/gamehub
An Expo-managed React Native application for browsing video games and checking the latest gaming news from around the world.
https://github.com/hojat72elect/gamehub
android android-application expo game news react react-native twitch typescript
Last synced: 2 months ago
JSON representation
An Expo-managed React Native application for browsing video games and checking the latest gaming news from around the world.
- Host: GitHub
- URL: https://github.com/hojat72elect/gamehub
- Owner: hojat72elect
- License: mit
- Created: 2022-12-04T20:14:46.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-23T06:04:07.000Z (8 months ago)
- Last Synced: 2024-05-23T06:40:06.264Z (8 months ago)
- Topics: android, android-application, expo, game, news, react, react-native, twitch, typescript
- Language: Kotlin
- Homepage:
- Size: 29.3 MB
- Stars: 12
- Watchers: 2
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
# `GameHub` Android app
----
Right now, we're in the process of migrating this app from a native Android app,
to a Kotlin Multiplatform app.
Feel free to collaborate with us.
----[![Build](https://github.com/hojat72elect/GameHub/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/hojat72elect/GameHub/actions/workflows/build.yml)
This is an Android client for IGDB
and Twitch APIs for all the latest news and information about
video games.The trello board I use for keeping track of all the tickets of this project is shared in here:
https://trello.com/b/lG03zl6P/game-news-app![Min API](https://img.shields.io/badge/API-21%2B-orange.svg?style=flat)
[![Platform](https://img.shields.io/badge/platform-Android-green.svg)](http://developer.android.com/index.html)App's UI and presentation layer are built entirely using the Jetpack Compose.
## Contents
* [Demonstration](#demonstration)
* [Videos](#videos)
* [Screenshots](#screenshots)
* [Tech Stack](#tech-stack)
* [Architecture](#architecture)
* [Development Setup](#development-setup)
* [IGDB](#igdb)
* [Gamespot](#gamespot)
* [Contributors](#Contributors)
* [Questions](#questions)## Demonstration
### Videos
Demo 1
https://user-images.githubusercontent.com/14782808/111520186-88671800-8760-11eb-8995-8e45a5cd9213.mp4
Demo 2
https://user-images.githubusercontent.com/14782808/111520260-9b79e800-8760-11eb-9665-1062ed2b2c24.mp4
Demo 3
https://user-images.githubusercontent.com/14782808/111520365-b187a880-8760-11eb-9dbe-0ffc44635ef8.mp4
### Screenshots
## Tech Stack
- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android
development.
- [Jetpack Compose](https://developer.android.com/jetpack/compose) - Android’s modern toolkit for
building native UI.
- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
and [Flow](https://kotlinlang.org/docs/reference/coroutines/flow.html#asynchronous-flow) -
Official Kotlin's tooling for performing asynchronous work.
- [MVVM/MVI Architecture](https://developer.android.com/jetpack/guide) - Official recommended
architecture for building robust, production-quality apps.
- [Android Jetpack](https://developer.android.com/jetpack) - Jetpack is a suite of libraries to help
developers build state-of-the-art applications.
- [Navigation Compose](https://developer.android.com/jetpack/compose/navigation) - Navigation
Compose is a framework for navigating between composables while taking advantage of the
Navigation component’s infrastructure and features.
- [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - The
ViewModel is designed to store and manage UI-related data in a lifecycle conscious way.
- [StateFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow#stateflow) -
StateFlow is a state-holder observable flow that emits the current and new state updates to
its collectors.
- [Room](https://developer.android.com/topic/libraries/architecture/room) - The Room library
provides an abstraction layer over SQLite to allow for more robust database access.
- [DataStore](https://developer.android.com/topic/libraries/architecture/datastore) - DataStore
is a data storage solution that stores key-value pairs or typed objects
with [protocol buffers](https://developers.google.com/protocol-buffers).
- [Dagger Hilt](https://developer.android.com/training/dependency-injection/hilt-android) - Hilt
is a dependency injection library for Android.
- [MotionLayout](https://developer.android.com/training/constraint-layout/motionlayout) -
MotionLayout allows you to create beautiful animations in your app without too much hassle.
- [Custom Tabs](https://developers.google.com/web/android/custom-tabs/implementation-guide) -
Custom Tabs is a browser feature that gives apps more control over their web experience.
- [Accompanist](https://github.com/google/accompanist) - A collection of extension libraries for
Jetpack Compose.
- [Lottie](http://airbnb.io/lottie/#/README) - A multiplatform UI library for parsing Adobe After
Effects animations exported as JSON.
- [OkHttp](https://github.com/square/okhttp) - An HTTP client for making network calls.
- [Retrofit](https://github.com/square/retrofit) - A library for building REST API clients.
- [KotlinX Serialization](https://github.com/Kotlin/kotlinx.serialization) - A multiplatform Kotlin
serialization library.
- [Coil](https://github.com/coil-kt/coil) - An image loading library.
- [Hilt Binder](https://github.com/mars885/hilt-binder) - An annotating processing library that
automatically generates Dagger Hilt's `@Binds` methods.
- [Kotlin Result](https://github.com/michaelbull/kotlin-result) - A multiplatform Result monad for
modelling success or failure operations.
- [Testing](https://developer.android.com/training/testing) - The app is currently covered with unit
tests and instrumentation tests.
- [JUnit](https://junit.org/junit5) - JUnit is a unit testing framework for the Java programming
language.
- [Truth](https://github.com/google/truth) - Truth is a library providing fluent assertions for
Java and Android.
- [MockK](https://github.com/mockk/mockk) - MockK is a mocking library for Kotlin.
- [Coroutines Test](https://github.com/Kotlin/kotlinx.coroutines/tree/master/kotlinx-coroutines-test)
- A library
for testing Kotlin coroutines.
- [Turbine](https://github.com/cashapp/turbine) - A testing library for Kotlin Flows.
- [Dagger Hilt Test](https://developer.android.com/training/dependency-injection/hilt-testing) -
A testing library for modifying the Dagger bindings in instrumented tests.
- [Room Testing](https://developer.android.com/training/data-storage/room/migrating-db-versions#test)
- A library
for testing Room migrations.
- [MockWebServer](https://github.com/square/okhttp/tree/master/mockwebserver) - A scriptable web
server for testing HTTP clients.
- [Napier](https://github.com/AAkira/Napier) - Kotlin Multiplatform logging library.
- [Gradle's Kotlin DSL](https://docs.gradle.org/current/userguide/kotlin_dsl.html) - Gradle’s Kotlin
DSL is an alternative syntax to the Groovy DSL with an enhanced editing experience.
- [buildSrc](https://docs.gradle.org/current/userguide/organizing_gradle_projects.html#sec:build_sources)
- A special
module within the project to manage dependencies and whatnot.For more information about used dependencies, see [this](/buildSrc/src/main/java/Dependencies.kt)
file.## Architecture
![architecture](/media/architecture.png)
## Development Setup
You'll need to supply API/client keys for the various services that the app uses in order to build
the application.### IGDB
[IGDB](https://www.igdb.com/discover) is a website dedicated to combining all the relevant
information about games into a comprehensive resource for gamers everywhere. This is the main API
that the app uses to fetch information about pretty much any video game there is.### Gamespot
[Gamespot](https://www.gamespot.com/) is a video gaming website that provides news, reviews,
previews, downloads, and other information on video games. The app uses its API to solely retrieve
the latest news in the gaming world.## Questions
If you have any questions regarding the codebase or have found an issue, please open up an issue on
GitHub repository.
I'll answer to all opened issues as fast as I can.### Contributors
Main developer: [Hojat Ghasemi](mailto:[email protected])
App icon designer: [Grace Peterson](mailto:[email protected])
Russian translations: [Daria Vinogradova](mailto:[email protected])