Skip to content

Sample iOS app demonstrating Coordinators, Dependency Injection, MVVM, Binding

License

Notifications You must be signed in to change notification settings

igorkulman/iOSSampleApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iOS Sample App

Sample iOS app written the way I write iOS apps because I cannot share the app I currently work on.

SwiftUI: I created a SwiftUI version of this sample app, using a bit defferent concepts: https://github.com/igorkulman/SwiftUISampleApp

Shown concepts

Architecture concepts

Other concepts

  • Localization to 2 languages with String catalogs
  • Continuous integration with Github Actions and Danger
  • Unit testing, including testing view controllers for leaks
  • Creating a view controller in code with dependency injection
  • Using static UITableView cells in a typed way with enums
  • Creating simple cells with UIListContentConfiguration
  • Automated AppStore screenshots taking in multiple languages
  • Adding custom reactive properties
  • Basic Dark mode support
  • Custom operator for simple UI code
  • Structured logging
  • Xcode build plugins
  • Xcode previews for UIKit

Getting started

Prerequisites

Built with

  • RxSwift - Reactive Programming in Swift
  • RxSwiftExt - A collection of Rx operators & tools not found in the core RxSwift distribution
  • Swinject - Dependency injection framework for Swift
  • Reusable - A Swift mixin for reusing views easily and in a type-safe way
  • Nuke - A powerful image loading and caching system
  • FeedKit - An RSS, Atom and JSON Feed parser written in Swift
  • NotificationBanner - The easiest way to display highly customizable in app notification banners in iOS
  • SpecLeaks - Unit Tests Memory Leaks in Swift. Write readable tests for mem leaks easily with these Quick and Nimble extensions
  • Quick - The Swift (and Objective-C) testing framework
  • Nimble - A Matcher Framework for Swift and Objective-C
  • SwifLint - A tool to enforce Swift style and conventions

Author

Igor Kulman - [email protected]

License

This project is licensed under the MIT License - see the LICENSE file for details