iOSSampleApp
                                
                                
                                
                                    iOSSampleApp copied to clipboard
                            
                            
                            
                        Sample iOS app demonstrating Coordinators, Dependency Injection, MVVM, Binding
iOS Sample App
Sample iOS app written the way I write iOS apps because I cannot share the app I currently work on.
Shown concepts
Architecture concepts
- Coordinators
 - Dependency Injection
 - MVVM
 - Data Binding
 - Dependencies management
 
Other concepts
- Localization to 2 languages with safer string usage and checking for missing translations
 - Continuous integration with Github Actions and Danger
 - Unit testing, including testing view controllers for leaks
 - Using (multiple) Storyboards just as glorified XIBs
 - Creating a view controller in code when Storyboard cannot be used
 - Using static UITableView cells in a typed way with enums
 - Image literals
 - Automated AppStore screenshots taking in multiple languages
 - Adding custom reactive properties
 - Basic Dark mode support
 
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
 
Author
Igor Kulman - [email protected]
License
This project is licensed under the MIT License - see the LICENSE file for details