An app to discover the marvel superheroes
MARVEL APP
This app helps you discover all the awesome marvel superheroes using MARVEL API. I created this app for an iOS tech test and for fun.
Requirements
- XCode 10.2+
- iOS 12.0+
- Swift 5
Installation
You can either download the zipped project or clone the project and you are ready to go ! ?
git clone https://github.com/MeenKoloina/marvel-app.git
Tech Stack
Programming language: 100% Swift
Mobile development tool: XCode
UI Framework: UIKit with interface builder and auto-layout
Unit testing: XCTest
Architectures
I have used MVVM architecture + Coordinator pattern.
The primary reason for me to use MVVM is that it allows me to split my code into classes that have well defined responsibilities which is the main disadvantage of MVC. By splitting my code, it is easier to put it under unit test. Also, by using MVVM my code is more readable, maintainable and modifiable.
Features
- Launchscreen with animations
- List of scrollable superheroes with search bar and table views
- Search for specific superhero using RxSwift
- Details of specific superhero (size class)
Screenshots
Pods
- Alamofire
- ObjectMapper
- AlamofireObjectMapper
- RxSwift & RxCocoa
- SDWebImage
FAQ
Why did you use RxSwift ?
RxSwift is a reactive programing library for iOS. I have used RxSwift in this project for the search features. I could have coded the whole search function but it would have taken me more time, and would have been more difficult and wouldn’t therefore be convenient for me since I have deadlines.
By using RxSwift, you can easily code so that your app reacts to user events and data changes dynamically. I would love later on to learn more in-depth and use Combine. Apple’s new framework for reactive programming.
What challenges did you face and how did you overcome them?
The biggest challenge that I face while building this app was the time management. I had to juggle between many projects and deadlines were all aroud the corner. For me to be able to build multiple good quality apps in such a short time I had to learn to manage projects. It includes:
- knowing what to prioritize
- Putting goals everyday on what needs to be finished
- Making a roadmap when building the app
- Read documentations to avoid hours of debug
If you had more time what would you have added ?
- A stylish custom transition for my view controllers
- More details with collection views for the character details screen