An open API service indexing awesome lists of open source software.

https://github.com/igorkulman/iossampleapp

Sample iOS app demonstrating Coordinators, Dependency Injection, MVVM, Binding
https://github.com/igorkulman/iossampleapp

binding carthage coordinator-pattern coordinators dependency-injection ios mvvm mvvm-architecture mvvm-c mvvm-coordinator rxswift swift travis

Last synced: 8 days ago
JSON representation

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

Awesome Lists containing this project

README

        

# 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

* [Coordinators](https://blog.kulman.sk/architecting-ios-apps-coordinators/)
* Dependency Injection
* MVVM
* [Data Binding](https://blog.kulman.sk/using-data-binding-in-ios/)
* Dependencies management

### 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

* Xcode 16
* [Fastlane](https://fastlane.tools/) (optional)

## Built with

- [RxSwift](https://github.com/ReactiveX/RxSwift) - Reactive Programming in Swift
- [RxSwiftExt](https://github.com/RxSwiftCommunity/RxSwiftExt) - A collection of Rx operators & tools not found in the core RxSwift distribution
- [Swinject](https://github.com/Swinject/Swinject) - Dependency injection framework for Swift
- [Reusable](https://github.com/AliSoftware/Reusable) - A Swift mixin for reusing views easily and in a type-safe way
- [Nuke](https://github.com/kean/Nuke) - A powerful image loading and caching system
- [FeedKit](https://github.com/nmdias/FeedKit) - An RSS, Atom and JSON Feed parser written in Swift
- [NotificationBanner](https://github.com/Daltron/NotificationBanner) - The easiest way to display highly customizable in app notification banners in iOS
- [SwifLint](https://github.com/realm/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](LICENSE) file for details