Skip to content

A native Android application for browsing video games and checking the latest gaming news from around the world.

License

Notifications You must be signed in to change notification settings

hojat72elect/GameHub

Repository files navigation

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

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 Platform

App's UI and presentation layer are built entirely using the Jetpack Compose.

Contents

Demonstration

Videos

Demo 1
demo1.mp4
Demo 2
demo2.mp4
Demo 3
demo3.mp4

Screenshots

An screen shot of the app An screen shot of the app An screen shot of the app

An screen shot of the app An screen shot of the app An screen shot of the app

Tech Stack

  • Kotlin - First class and official programming language for Android development.
  • Jetpack Compose - Android’s modern toolkit for building native UI.
  • Coroutines and Flow - Official Kotlin's tooling for performing asynchronous work.
  • MVVM/MVI Architecture - Official recommended architecture for building robust, production-quality apps.
  • Android Jetpack - Jetpack is a suite of libraries to help developers build state-of-the-art applications.
    • Navigation Compose - Navigation Compose is a framework for navigating between composables while taking advantage of the Navigation component’s infrastructure and features.
    • ViewModel - The ViewModel is designed to store and manage UI-related data in a lifecycle conscious way.
    • StateFlow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
    • Room - The Room library provides an abstraction layer over SQLite to allow for more robust database access.
    • DataStore - DataStore is a data storage solution that stores key-value pairs or typed objects with protocol buffers.
    • Dagger Hilt - Hilt is a dependency injection library for Android.
    • MotionLayout - MotionLayout allows you to create beautiful animations in your app without too much hassle.
    • Custom Tabs - Custom Tabs is a browser feature that gives apps more control over their web experience.
  • Accompanist - A collection of extension libraries for Jetpack Compose.
  • Lottie - A multiplatform UI library for parsing Adobe After Effects animations exported as JSON.
  • OkHttp - An HTTP client for making network calls.
  • Retrofit - A library for building REST API clients.
  • KotlinX Serialization - A multiplatform Kotlin serialization library.
  • Coil - An image loading library.
  • Hilt Binder - An annotating processing library that automatically generates Dagger Hilt's @Binds methods.
  • Kotlin Result - A multiplatform Result monad for modelling success or failure operations.
  • Testing - The app is currently covered with unit tests and instrumentation tests.
    • JUnit - JUnit is a unit testing framework for the Java programming language.
    • Truth - Truth is a library providing fluent assertions for Java and Android.
    • MockK - MockK is a mocking library for Kotlin.
    • Coroutines Test
      • A library for testing Kotlin coroutines.
    • Turbine - A testing library for Kotlin Flows.
    • Dagger Hilt Test - A testing library for modifying the Dagger bindings in instrumented tests.
    • Room Testing
      • A library for testing Room migrations.
    • MockWebServer - A scriptable web server for testing HTTP clients.
  • Napier - Kotlin Multiplatform logging library.
  • Gradle's Kotlin DSL - Gradle’s Kotlin DSL is an alternative syntax to the Groovy DSL with an enhanced editing experience.
  • buildSrc
    • A special module within the project to manage dependencies and whatnot.

For more information about used dependencies, see this file.

Architecture

architecture

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 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 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
App icon designer: Grace Peterson
Russian translations: Daria Vinogradova

About

A native Android application for browsing video games and checking the latest gaming news from around the world.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published