Skip to content

mohamedfarid1993/Characters

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Character App

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.

Important Notes

  • 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.

Challenges

  • 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.

Dependencies

  • Alamofire: Networking
  • Kinngfisher: Downloading Images
  • SnapKit: Layout

Assumptions

  • 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.

Tests

  • 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.

Enhancements To Be Added

  • Separation of Different Error Types (Netwrok - Server -Client)
  • Response Caching
  • Localization Support
  • Better Error State Handling
  • Better UITests & Unit Testing Coverage

Technologies Used

  • UIKit: Characters List Screen
  • SwiftUI: Character Details Screen

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3

Getting Started

To get started with the project, follow these steps:

  1. Clone the repository to your local machine:
git clone https://github.com/mohamedfarid1993/Characters
  1. Go to Characters folder
cd Characters 
  1. Open project in Xcode
open Characters.xcodeproj

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages