Welcome to Characters! This is a simple iOS application for viewing a paginated list of characters with the ability to filter them by their status (Alive, Dead, or Unknown). Users can also view detailed information about any of the characters.
- The UI link didn't open, so I attempted to replicate the designs as closely as possible.
- Deployment Info is iOS 17.0.
- A network layer was added to demonstrate scalability, although a simpler solution could have been submitted.
- Using Compositional Layout caused unnecessary updates to the statuses section, resulting in bugs. To address this, I opted for reloading/inserting updates to the characters section instead of using the collection view's reloadData method.
- Alamofire: Networking
- Kinngfisher: Downloading Images
- SnapKit: Layout
- Character background color is set based on gender.
- Character name truncated as two lines look good.
- Support for landscape and iPad designs is not necessary.
- UI Tests: Added a simple UITest to open details view and check the existence of all its components.
- Unit Tests: Added tests for Netwrok Layer, Image Provider and Characters List View Model.
- Maunal Tests: Manual Testing is conducted to make sure all requirements are met.
- Memory Leaks Tests: Memory leaks checks using Instruments(main branch) with zero memory leaks.
- Separation of Different Error Types (Netwrok - Server -Client)
- Response Caching
- Localization Support
- Better Error State Handling
- Better UITests & Unit Testing Coverage
- UIKit: Characters List Screen
- SwiftUI: Character Details Screen
To get started with the project, follow these steps:
- Clone the repository to your local machine:
git clone https://github.com/mohamedfarid1993/Characters
- Go to Characters folder
cd Characters
- Open project in Xcode
open Characters.xcodeproj