Thanks to visit codestin.com
Credit goes to github.com

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