{"id":13694164,"url":"https://github.com/igorkulman/iOSSampleApp","last_synced_at":"2025-05-03T01:31:29.434Z","repository":{"id":46887494,"uuid":"105629398","full_name":"igorkulman/iOSSampleApp","owner":"igorkulman","description":"Sample iOS app demonstrating Coordinators, Dependency Injection, MVVM, Binding","archived":false,"fork":false,"pushed_at":"2025-04-23T19:53:19.000Z","size":76618,"stargazers_count":900,"open_issues_count":0,"forks_count":92,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-23T20:37:12.742Z","etag":null,"topics":["binding","carthage","coordinator-pattern","coordinators","dependency-injection","ios","mvvm","mvvm-architecture","mvvm-c","mvvm-coordinator","rxswift","swift","travis"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igorkulman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/bootstrap.sh","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-10-03T08:26:16.000Z","updated_at":"2025-04-23T19:53:23.000Z","dependencies_parsed_at":"2024-01-13T12:19:50.465Z","dependency_job_id":"6cf23c96-88ef-44bc-bccf-44b057d5663a","html_url":"https://github.com/igorkulman/iOSSampleApp","commit_stats":{"total_commits":271,"total_committers":3,"mean_commits":90.33333333333333,"dds":"0.0073800738007380184","last_synced_commit":"58a2de206b7a6cd225f454f688290f1388c74771"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkulman%2FiOSSampleApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkulman%2FiOSSampleApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkulman%2FiOSSampleApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkulman%2FiOSSampleApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igorkulman","download_url":"https://codeload.github.com/igorkulman/iOSSampleApp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252130402,"owners_count":21699083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binding","carthage","coordinator-pattern","coordinators","dependency-injection","ios","mvvm","mvvm-architecture","mvvm-c","mvvm-coordinator","rxswift","swift","travis"],"created_at":"2024-08-02T17:01:25.755Z","updated_at":"2025-05-03T01:31:29.410Z","avatar_url":"https://github.com/igorkulman.png","language":"Swift","readme":"# iOS Sample App\n\nSample iOS app written the way I write iOS apps because I cannot share the app I currently work on.\n\n**SwiftUI**: I created a SwiftUI version of this sample app, using a bit defferent concepts: https://github.com/igorkulman/SwiftUISampleApp\n\n## Shown concepts\n\n### Architecture concepts\n\n* [Coordinators](https://blog.kulman.sk/architecting-ios-apps-coordinators/)\n* Dependency Injection\n* MVVM\n* [Data Binding](https://blog.kulman.sk/using-data-binding-in-ios/)\n* Dependencies management\n\n### Other concepts\n\n* Localization to 2 languages with String catalogs\n* Continuous integration with Github Actions\n* Unit testing, including testing view controllers for leaks\n* Creating a view controller in code with dependency injection\n* Using static UITableView cells in a typed way with enums\n* Creating simple cells with UIListContentConfiguration\n* Automated AppStore screenshots taking in multiple languages\n* Adding custom reactive properties\n* Basic Dark mode support\n* Custom operator for simple UI code\n* Structured logging\n* Xcode build plugins\n* Xcode previews for UIKit\n\n## Getting started\n\n### Prerequisites\n\n* Xcode 16\n* [Fastlane](https://fastlane.tools/) (optional)\n\n## Built with\n\n- [RxSwift](https://github.com/ReactiveX/RxSwift) - Reactive Programming in Swift\n- [RxSwiftExt](https://github.com/RxSwiftCommunity/RxSwiftExt) - A collection of Rx operators \u0026 tools not found in the core RxSwift distribution\n- [Swinject](https://github.com/Swinject/Swinject) - Dependency injection framework for Swift\n- [Reusable](https://github.com/AliSoftware/Reusable) - A Swift mixin for reusing views easily and in a type-safe way\n- [Nuke](https://github.com/kean/Nuke) - A powerful image loading and caching system\n- [FeedKit](https://github.com/nmdias/FeedKit) - An RSS, Atom and JSON Feed parser written in Swift\n- [NotificationBanner](https://github.com/Daltron/NotificationBanner) - The easiest way to display highly customizable in app notification banners in iOS\n- [SwiftLint](https://github.com/realm/SwiftLint) - A tool to enforce Swift style and conventions\n\n## Author\n\nIgor Kulman - igor@kulman.sk\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n","funding_links":[],"categories":["Sample"],"sub_categories":["RSS"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorkulman%2FiOSSampleApp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figorkulman%2FiOSSampleApp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorkulman%2FiOSSampleApp/lists"}