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

https://github.com/simpleboilerplates/ios

A sample project demonstrating MVVM, RxSwift, Coordinator Pattern, Dependency Injection
https://github.com/simpleboilerplates/ios

coordinator-pattern dependency-injection ios moya mvvm rxswift swift swinject

Last synced: 9 months ago
JSON representation

A sample project demonstrating MVVM, RxSwift, Coordinator Pattern, Dependency Injection

Awesome Lists containing this project

README

          

# Boilerplates

This is a very simple Boilerplate application, this has following features.

- User can Sign In and Up
- After signing in he can see a list of items

* I didn't add many functionality and didn't polish UI intentionally, tried to keep it barebone as much as possible

### Same implementation in other platforms
- [Android](https://github.com/simpleboilerplates/BooksDemoAndroid)
- [Flutter](https://github.com/SimpleBoilerplates/Flutter)
- [React Native](https://github.com/SimpleBoilerplates/React-Native)
- [NodeJS backend](https://github.com/simpleboilerplates/BooksDemoNode)


# With

- MVVM
- [RxSwift](https://github.com/ReactiveX/RxSwift)
- [Coordinator Pattern](https://www.raywenderlich.com/158-coordinator-tutorial-for-ios-getting-started)
- Dependency Injection with [Swinject](https://github.com/Swinject/Swinject)
- [Moya](https://github.com/Moya/Moya) for API call
- Project by feature not by layer

### MVVM Tutorials
* [MVVM pattern with Swift application](http://swiftyjimmy.com/mvvm-with-swift-application-part1/)
* [How not to get desperate with MVVM implementation](https://medium.com/flawless-app-stories/how-to-use-a-model-view-viewmodel-architecture-for-ios-46963c67be1b)
* [Introduction to MVVM](https://www.appcoda.com/mvvm-vs-mvc/)
* [Design Patterns by Tutorials: MVVM](https://www.raywenderlich.com/34-design-patterns-by-tutorials-mvvm)
* [ An Introduction to the MVVM Design Pattern](https://www.toptal.com/ios/swift-tutorial-introduction-to-mvvm)
* [Fantastic iOS Architecture](https://github.com/onmyway133/fantastic-ios-architecture)
* [How to use RxSwift with MVVM](http://swiftyjimmy.com/category/how-to-use-rxswift/)
* [MVVM with RxSwift](https://academy.realm.io/posts/slug-max-alexander-mvvm-rxswift/)
* [MVVM + RxSwift on iOS](https://hackernoon.com/mvvm-rxswift-on-ios-part-1-69608b7ed5cd)

### RxSwift
* [Getting Started With RxSwift and RxCocoa](https://www.raywenderlich.com/1228891-getting-started-with-rxswift-and-rxcocoa)
* [Learn & Master ⚔️ the Basics of RxSwift in 10 Minutes](https://medium.com/ios-os-x-development/learn-and-master-%EF%B8%8F-the-basics-of-rxswift-in-10-minutes-818ea6e0a05b)

### Dependency Injection
* [Swinject Tutorial for iOS: Getting Started Raywenderlich](https://www.raywenderlich.com/17-swinject-tutorial-for-ios-getting-started)
* [Dependency Injection with Swinject](https://itnext.io/dependency-injection-with-swinject-73f3144b20f0)
* [Dependency Injection Strategies in Swift](https://quickbirdstudios.com/blog/swift-dependency-injection-service-locators/)

### Unit Test
* [Behavior-Driven Testing Tutorial for iOS with Quick & Nimble](https://www.raywenderlich.com/135-behavior-driven-testing-tutorial-for-ios-with-quick-nimble)
* [Using Quick and Nimble for testing in iOS](https://blog.pusher.com/quick-nimble-testing-ios/)
* [Test Driven Development (TDD) in Swift with Quick and Nimble](https://www.appcoda.com/tdd-quick-nimble/)

### Coordinator Pattern
* [How to implement flow coordinator pattern](https://medium.com/@pavlepesic/flow-coordination-pattern-5eb60cd220d5)
* [Flow coordinator pattern on steroids](https://medium.com/flawless-app-stories/flow-coordinator-pattern-on-steroids-a52021e31bfe)
* [How to implement delegation pattern using MVVM and flow coordinators](https://medium.com/@pavlepesic/how-to-implement-delegation-pattern-using-mvvm-and-flow-coordinators-d1f6c3fcbe6)
* [Coordinators Essential tutorial](https://medium.com/blacklane-engineering/coordinators-essential-tutorial-part-i-376c836e9ba7)

### Moya Tutorials

* [Moya Tutorial for iOS](https://www.raywenderlich.com/5121-moya-tutorial-for-ios-getting-started)
* [Getting Started with Moya](https://medium.com/flawless-app-stories/getting-started-with-moya-f559c406e990)

### Project

* [Is package by feature approach good?](https://stackoverflow.com/questions/11733267/is-package-by-feature-approach-good)
* [Uncle Bob's clean architecture approach - what is recommended package structure?](https://stackoverflow.com/questions/46884449/uncle-bobs-clean-architecture-approach-what-is-recommended-package-structure)

### Tools
* [Swiftlint](https://github.com/realm/SwiftLint) A tool to enforce Swift style and conventions.
* [SwiftFormat](https://github.com/nicklockwood/SwiftFormat) A code library and command-line formatting tool for reformatting Swift code.
* [Xiblint](https://github.com/lyft/xiblint) A tool for linting storyboard and xib files
* [Sonar Qube](https://www.sonarqube.org/) Continuous Code Quality
* [Periphery](https://github.com/peripheryapp/periphery) Eliminate Unused Swift Code.
* [XcodeGen](https://github.com/yonaskolb/XcodeGen) A Swift command line tool for generating your Xcode project
* [JSONExport](https://github.com/Ahmed-Ali/JSONExport) JSONExport is an application for MacOS to generate class from JSON.
* [Synx](https://github.com/venmo/synx) A command-line tool that reorganizes your Xcode project folder to match your Xcode groups
* [Postman](https://www.getpostman.com) Faster, easier API development
* [Insomnia](https://insomnia.rest/) Finally, a REST client you'll love, also works with GraphQL
* [danger](https://github.com/danger/danger) Formalize your Pull Request etiquette.
* [Fastlane](https://github.com/fastlane/fastlane) Automate building and releasing your iOS and Android app

### Installation

This project requires [Cocoapods](https://cocoapods.org//) to start.

Install the dependencies .

```sh
$ cd iOS
$ pod install
```

### TODO
- Updating it on daily basis as much as possible, work in progess[WIP].

### Found this project useful :heart:
* Support by clicking the :star: button on the upper right of this page. :v:

### Contact - Let's become friend
- [LinkedIn](https://www.linkedin.com/in/sadmansamee/)
- [Github](https://github.com/Sadmansamee)
- [Dev.To](https://dev.to/sadmansamee)
- [Medium](https://medium.com/@sadmansamee)
- [Facebook](https://www.facebook.com/sameesadman)
- [Twitter](https://twitter.com/SameeSadman)

## License
[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)

## Contributing

Your contributions are always welcome! Just follow the following format: `[reference name](link) - Description.` If you like it , give a star to this project