├── ExampleMVVM.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── oleh.kudinov.xcuserdatad │ │ ├── IDEFindNavigatorScopes.plist │ │ └── UserInterfaceState.xcuserstate ├── xcshareddata │ └── xcschemes │ │ └── ExampleMVVM.xcscheme └── xcuserdata │ └── oleh.kudinov.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist ├── ExampleMVVM ├── Application │ ├── AppAppearance.swift │ ├── AppConfigurations.swift │ ├── AppDIContainer.swift │ ├── AppDelegate.swift │ └── AppMainCoordinator.swift ├── Common │ └── Cancellable.swift ├── Data │ ├── Network │ │ ├── APIEndpoints.swift │ │ └── DataMapping │ │ │ └── Movie+Mapping.swift │ ├── PersistentStorages │ │ └── MoviesRecentQueriesStorage.swift │ └── Repositories │ │ ├── MoviesDataSource.swift │ │ ├── MoviesQueriesDataSource.swift │ │ └── PosterImagesDataSource.swift ├── Domain │ ├── Entities │ │ ├── Movie.swift │ │ ├── MovieOffer.swift │ │ └── MovieQuery.swift │ ├── Interfaces │ │ └── Repositories │ │ │ ├── MoviesDataSourceInterface.swift │ │ │ ├── MoviesQueriesDataSourceInterface.swift │ │ │ └── PosterImagesDataSourceInterface.swift │ └── UseCases │ │ ├── FetchMovieOfferUseCase.swift │ │ └── FetchMoviesUseCase.swift ├── Infrastructure │ └── Network │ │ ├── DataTransfer.swift │ │ ├── Endpoint.swift │ │ ├── Network.swift │ │ └── NetworkConfig.swift ├── Presentation │ ├── MoviesScene │ │ ├── MoviesList │ │ │ ├── Coordinator │ │ │ │ └── MoviesListViewCoordinator.swift │ │ │ ├── View │ │ │ │ ├── MoviesListTableView │ │ │ │ │ ├── Cells │ │ │ │ │ │ └── MoviesListItemCell.swift │ │ │ │ │ └── MoviesListTableViewController.swift │ │ │ │ ├── MoviesListViewController.storyboard │ │ │ │ └── MoviesListViewController.swift │ │ │ └── ViewModel │ │ │ │ ├── MoviesListViewItemModel.swift │ │ │ │ └── MoviesListViewModel.swift │ │ ├── MoviesQueriesList │ │ │ ├── Coordinator │ │ │ │ └── MoviesQueriesListCoordinator.swift │ │ │ ├── View │ │ │ │ ├── Cells │ │ │ │ │ └── MoviesQueriesItemCell.swift │ │ │ │ ├── MoviesQueriesTableViewController.storyboard │ │ │ │ └── MoviesQueriesTableViewController.swift │ │ │ └── ViewModel │ │ │ │ └── MoviesQueriesListViewModel.swift │ │ └── MoviesSceneDIContainer.swift │ └── Utils │ │ ├── MVVM │ │ ├── MVVMView.swift │ │ └── MVVMViewModel.swift │ │ ├── Observable.swift │ │ └── Protocols │ │ ├── Alertable.swift │ │ ├── Coordinator.swift │ │ └── StoryboardInstantiable.swift └── Resources │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ └── image_not_found.imageset │ │ ├── Contents.json │ │ └── image_not_found.png │ ├── Base.lproj │ └── LaunchScreen.storyboard │ └── Info.plist ├── ExampleMVVMTests ├── FetchMoviesUseCaseTests.swift └── Info.plist └── README.md /ExampleMVVM.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /ExampleMVVM.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /ExampleMVVM.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /ExampleMVVM.xcodeproj/project.xcworkspace/xcuserdata/oleh.kudinov.xcuserdatad/IDEFindNavigatorScopes.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/project.xcworkspace/xcuserdata/oleh.kudinov.xcuserdatad/IDEFindNavigatorScopes.plist -------------------------------------------------------------------------------- /ExampleMVVM.xcodeproj/project.xcworkspace/xcuserdata/oleh.kudinov.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/project.xcworkspace/xcuserdata/oleh.kudinov.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /ExampleMVVM.xcodeproj/xcshareddata/xcschemes/ExampleMVVM.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/xcshareddata/xcschemes/ExampleMVVM.xcscheme -------------------------------------------------------------------------------- /ExampleMVVM.xcodeproj/xcuserdata/oleh.kudinov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/xcuserdata/oleh.kudinov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist -------------------------------------------------------------------------------- /ExampleMVVM.xcodeproj/xcuserdata/oleh.kudinov.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM.xcodeproj/xcuserdata/oleh.kudinov.xcuserdatad/xcschemes/xcschememanagement.plist -------------------------------------------------------------------------------- /ExampleMVVM/Application/AppAppearance.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Application/AppAppearance.swift -------------------------------------------------------------------------------- /ExampleMVVM/Application/AppConfigurations.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Application/AppConfigurations.swift -------------------------------------------------------------------------------- /ExampleMVVM/Application/AppDIContainer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Application/AppDIContainer.swift -------------------------------------------------------------------------------- /ExampleMVVM/Application/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Application/AppDelegate.swift -------------------------------------------------------------------------------- /ExampleMVVM/Application/AppMainCoordinator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Application/AppMainCoordinator.swift -------------------------------------------------------------------------------- /ExampleMVVM/Common/Cancellable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Common/Cancellable.swift -------------------------------------------------------------------------------- /ExampleMVVM/Data/Network/APIEndpoints.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Data/Network/APIEndpoints.swift -------------------------------------------------------------------------------- /ExampleMVVM/Data/Network/DataMapping/Movie+Mapping.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Data/Network/DataMapping/Movie+Mapping.swift -------------------------------------------------------------------------------- /ExampleMVVM/Data/PersistentStorages/MoviesRecentQueriesStorage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Data/PersistentStorages/MoviesRecentQueriesStorage.swift -------------------------------------------------------------------------------- /ExampleMVVM/Data/Repositories/MoviesDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Data/Repositories/MoviesDataSource.swift -------------------------------------------------------------------------------- /ExampleMVVM/Data/Repositories/MoviesQueriesDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Data/Repositories/MoviesQueriesDataSource.swift -------------------------------------------------------------------------------- /ExampleMVVM/Data/Repositories/PosterImagesDataSource.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Data/Repositories/PosterImagesDataSource.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/Entities/Movie.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/Entities/Movie.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/Entities/MovieOffer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/Entities/MovieOffer.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/Entities/MovieQuery.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/Entities/MovieQuery.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/Interfaces/Repositories/MoviesDataSourceInterface.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/Interfaces/Repositories/MoviesDataSourceInterface.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/Interfaces/Repositories/MoviesQueriesDataSourceInterface.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/Interfaces/Repositories/MoviesQueriesDataSourceInterface.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/Interfaces/Repositories/PosterImagesDataSourceInterface.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/Interfaces/Repositories/PosterImagesDataSourceInterface.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/UseCases/FetchMovieOfferUseCase.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/UseCases/FetchMovieOfferUseCase.swift -------------------------------------------------------------------------------- /ExampleMVVM/Domain/UseCases/FetchMoviesUseCase.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Domain/UseCases/FetchMoviesUseCase.swift -------------------------------------------------------------------------------- /ExampleMVVM/Infrastructure/Network/DataTransfer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Infrastructure/Network/DataTransfer.swift -------------------------------------------------------------------------------- /ExampleMVVM/Infrastructure/Network/Endpoint.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Infrastructure/Network/Endpoint.swift -------------------------------------------------------------------------------- /ExampleMVVM/Infrastructure/Network/Network.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Infrastructure/Network/Network.swift -------------------------------------------------------------------------------- /ExampleMVVM/Infrastructure/Network/NetworkConfig.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Infrastructure/Network/NetworkConfig.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesList/Coordinator/MoviesListViewCoordinator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesList/Coordinator/MoviesListViewCoordinator.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListTableView/Cells/MoviesListItemCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListTableView/Cells/MoviesListItemCell.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListTableView/MoviesListTableViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListTableView/MoviesListTableViewController.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListViewController.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListViewController.storyboard -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesList/View/MoviesListViewController.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesList/ViewModel/MoviesListViewItemModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesList/ViewModel/MoviesListViewItemModel.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesList/ViewModel/MoviesListViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesList/ViewModel/MoviesListViewModel.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/Coordinator/MoviesQueriesListCoordinator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/Coordinator/MoviesQueriesListCoordinator.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/View/Cells/MoviesQueriesItemCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/View/Cells/MoviesQueriesItemCell.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/View/MoviesQueriesTableViewController.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/View/MoviesQueriesTableViewController.storyboard -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/View/MoviesQueriesTableViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/View/MoviesQueriesTableViewController.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/ViewModel/MoviesQueriesListViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/ViewModel/MoviesQueriesListViewModel.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/MoviesScene/MoviesSceneDIContainer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/MoviesScene/MoviesSceneDIContainer.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/Utils/MVVM/MVVMView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/Utils/MVVM/MVVMView.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/Utils/MVVM/MVVMViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/Utils/MVVM/MVVMViewModel.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/Utils/Observable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/Utils/Observable.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/Utils/Protocols/Alertable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/Utils/Protocols/Alertable.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/Utils/Protocols/Coordinator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/Utils/Protocols/Coordinator.swift -------------------------------------------------------------------------------- /ExampleMVVM/Presentation/Utils/Protocols/StoryboardInstantiable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Presentation/Utils/Protocols/StoryboardInstantiable.swift -------------------------------------------------------------------------------- /ExampleMVVM/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /ExampleMVVM/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Resources/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /ExampleMVVM/Resources/Assets.xcassets/image_not_found.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Resources/Assets.xcassets/image_not_found.imageset/Contents.json -------------------------------------------------------------------------------- /ExampleMVVM/Resources/Assets.xcassets/image_not_found.imageset/image_not_found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Resources/Assets.xcassets/image_not_found.imageset/image_not_found.png -------------------------------------------------------------------------------- /ExampleMVVM/Resources/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Resources/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /ExampleMVVM/Resources/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVM/Resources/Info.plist -------------------------------------------------------------------------------- /ExampleMVVMTests/FetchMoviesUseCaseTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVMTests/FetchMoviesUseCaseTests.swift -------------------------------------------------------------------------------- /ExampleMVVMTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/ExampleMVVMTests/Info.plist -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kudoleh/iOS-Example-MVVM-C/HEAD/README.md --------------------------------------------------------------------------------