Skip to content

Mahmoud-Aziz/GamesApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

174 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Games App

Games App is an application that interacts with rawg.io video games API and helps the user to search and save his favorite games.

How to run the project

Clone and run!.

in case a "Missing package produnct" or "Fails to reslove dependency graph" error occured, please navigate to file/packages/reset package caches.

Add your API key to API_KEY property at path: GamesApp/Shared/Enviroment/Shared.XCConfig

Project Overview

User can search for a game and gets information like the Metascore rating, the genre, and a description. Also, the user can save a game to store locally on his device.

App Features

Games: the main screen and here the user can search and find games from rawg.io API.

Details: a more informative screen for the selected game, including description and hyperlinks for the Reddit community and website for the selected game. On this screen, users can save games locally.

Favorites: contains pre-saved games on the details screen.

Project Architecture

The project is following clean architecture and uses MVVM with a group of practices and decisions that makes the code testable with dependable components.

Every module consists of the Presentation layer, Domain layer, and Data layer for a better separation of concerns and single responsibility.

The view is state-driven. The view model controls the view's current state totally depending on the delegate pattern.

Enviroments:

Project supports three enviroments: Development, Stage and Production. The configurations is imported from .xcconfig file for each scheme.

More info

The project depends on URLSession for networking and the network layer is built following builder pattern. Data is saved locally using Coredata.

Things to improve

Work offline customizations.

Issues to be solved

Work in progress

  • Support reachability detection and retry for networking.

  • Add a read more button for the description label in the details screen.

  • Write unit testing.

Screenshots

Simulator Screen Shot - iPhone 13 Pro Max - 2022-04-03 at 01 48 39 Simulator Screen Shot - iPhone 13 Pro Max - 2022-04-03 at 01 48 44 Simulator Screen Shot - iPhone 13 Pro Max - 2022-04-03 at 01 49 32 Simulator Screen Shot - iPhone 13 Pro Max - 2022-04-03 at 01 49 37 Webp net-resizeimage Webp net-resizeimage-2

About

Technical case study for Lean Scale interview.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages