Marvel Heroes App Built with Swift
Marvel Heroes
Marvel Heroes repository based on Marvel API https://developer.marvel.com/docs
Requirements
- iOS 13.0+
- Xcode 12.x
Installation
CocoaPods
- Add SDWebImage pod to load images asynchronusly and save them on cache.
- Add SwiftyJson to parse json response to swift models quickly.
pod install
Features
- Connect to Marvel API with properly authentication (see Config/MSConfig.swift and Service/MSUtils.swift)
- Service folder manage two request to get the API info, with the first list call we already have all needed data but I prefer separate the second detail call. Also I decide parse only used data in MSCharacterLite to improve the perfonmance. In the big Entity (MSCharacter) there are the rest fields.
- The project uses VIPER architecture to modularize the code by screens, CharacterList and CharacterDetails. The Entities are in Service folder but the rest inside of Modules.
- The views are loaded by Storyboards with Autolayout.
- When the app finish to start, the CharacterList module is loaded. In this screen, we can see a collection view with Marvel’s Heroes list, showing image and name. This images has not the same aspect ratio between them, so I decide to use AspectFill on the image to give them more uniformity.
- When any cell is selected, the character detail is loaded in a new pop up, when we can see the detailed information about his Comics, Series, Stories, Events and Links.
- Also, I write some quick unit MSService class test (using real service).
Screenshots
Next steps
- Add pagination to CharacterListView would be necessary to access to entire information. Now the service return only the twenty first results.
- Add unit test to rest of the code (Modules folder).
- Add more SOLID architecture to isolate parts of code, like the Entities of the Service, which are used even by the views now.
- Improve UI to add loading indicators and many more.