Skip to content

OmneyaOsman/RAWGGames

Repository files navigation

RAWGames 🚀

banner

Table of Contents

Demo

Introduction

app that allows you to search and discover video games according to your preferences. the project using: clean architecture,MVVM setup, Coroutines, Kotlin Flows and LiveData.

structure

Modules

  • app - The application module with access to all the application
  • data - Android module that can only access domain module
  • domain - Kotlin module that cannot access any other module
  • presentation layer - Android modules that can only access domain module
  • feature-games-list - Android module that handle Games List Feature
  • feature-favorite-genere - Android module that handle Genere List Feature and set Favorite or edit Genere
  • featur-search - Android module that handle Searching in database
  • navigation - Android jetpack navigation abstraction (it contains the navigation config file) cannot access any other module

And one extra module:

  • core - Base classes module (factories, events, etc.) that cannot access any other module

libraries_used

  • Coroutines Library support for Kotlin coroutines.
  • Flows for asynchronous data streams.
  • LiveData for reactive style programming (from VM to UI).
  • Navigation for in-app navigation.
  • Koin for dependency injection.
  • Retrofit for REST api communication.
  • Timber for logging.
  • AndroidX Test Library for providing JUnit4 and functions as launchActivity in UI tests
  • Glide Image downloading and caching library
  • Paging3 Library that Load data in pages, and present it in a RecyclerView.
  • Room Library that Create, store, and manage persistent data backed by a SQLite database.
  • DataStore Library that Store data asynchronously, consistently, and transactionally, overcoming some of the drawbacks of SharedPreferences

License

Copyright 2021 Omneya Osman

Licensed under the Apache License, Version 1.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.