/Marvel-Client

iOS 15, MVVM, Async Await, Core Data, Abstract Network Layer, Snapshot Testing, Repository & DAO design patterns, SwiftUI and Combine

Primary LanguageSwiftMIT LicenseMIT

Marvel Client

Overview

iOS 15 Client for Marvel API with the following features:

  • MVVM
  • Abstract Network Layer
  • SwiftUI
  • Async/Await
  • Theme Switcher
  • Core Data persistence with Async/Await approach + One To Many Relationship
  • DAO, Repository and Dependency Injection Design Patterns
  • Unit Testing: Network Layer, CoreData DAO, Repository, JSON Decodable
  • Network Stubs for Testing
  • Snapshot Testing

Set-Up

  1. Register in https://developer.marvel.com/
  2. Replace Private and Public Key variables in /APIService/Router.swift
  3. Install Swiftlint via brew install swiftlint
  4. Xcode 13 should be installed

Architecture

Marvel Client

Dependencies installed via SwiftPM:

View Use Cases

  • Get Heroes
  • Pagination
  • Delete Hero via Swipe
  • Delete All Heroes
  • Make Favorite Heroes
  • Sort Heroes by Favorite & Name
  • Pull to Refresh
  • Loading State
  • No Internet Connection Pop-Up
  • Empty State
  • Persistent Data
  • Filtering

Screenshots