Skip to content

hico17/EZPokemon

Repository files navigation

EzPokemon

EzPokemon is a project written in MVVM with RxSwift, using the api available at https://pokeapi.co

Project guidelines

  • Use Swift 5.3
  • Use iOS 11 SDK as Target
  • The UI must be created without the use of Xib or Storyboard, it must be dynamic and must support both iPhone and iPad
  • Use a maximum of two external libraries and motivate their use
  • You can use CocoaPods, Carthage or SwiftPM giving reasons for your choice
  • Use the MVVM pattern
  • Check that the build is successful before submitting the project
  • Submit the code by publishing it to a public repository
  • Create a README.md in which you explain the reason for your implementation choices.

Bonus Tasks

  • Make maximum use of one external library
  • Make the app work even offline
  • Write Unit Tests

Customize the project with something you think will be useful for this app.

Considerations

The app is created for iPhone and iPad. It uses the UISplitViewController in order to fit both the screens optimally. The app is also designed to be used in Dark Mode.

An MVVM pillar is known to be data binding. There are two well-known responsive frameworks that could have helped accomplish this task: Combine and RxSwift.

One of the constraints of the project is to use iOS 11 as a deployment target, so RxSwift (and therefore RxCocoa) was a mandatory choice, because Combine is only available starting with iOS 13.

Swift Package Manager was my first choice to integrate external libraries, in order to do it the "Xcode native way", avoiding the creation of a workspace with a new Pod target used in CocoaPods. RxSwift has known problems with SPM, so I decided the safe way of CocoaPods.

I only used RxCocoa (and therefore RxSwift) as an external library. The other library is "Utilities", written by me as a Development Pod. It is, for now, local. It should be versioned in order to be upgraded and reused in the future.

The app stores images in NSCache. For now, the app only works with the network connection. It should store data in order to work offline and avoid repeating the API call.

Requirements

  • iOS 11.0+
  • Xcode 12+
  • Swift 5.3+

Credits

I DON'T own ANYTHING about pokeapi, RxSwift or other external libraries/api used or linked inside the project. This is just a test project.

About

Easy MVVM+C Pokemon example app

Resources

Stars

Watchers

Forks

Packages

No packages published