This assignment from VDC
- This project was using the MVVM app architecture for
Presentation Layer
. - Using Clean Architecture data flow
- Using Dependency injection pattern
- Separate raw
Model
from API response withModel
using inView
- Defined
Contract
for both Input/Output for eachScene
- Using
Cocoapods
as Packet Manager
- Target OpenWeatherClient
Application
: containAppdelegate
andSceneDelegate
Configurations
: containXCodeConfig
andInfo.plist
Factory
:Dependencies
proxy using in appComponent
: containCoordinator
,Manager
,Services
andConstants
using in appModels
: Raw model from API responseScenes
: Scenes using in appExtensions
: categoryResources
: resources using in app
- OpenWeatherClientTests
Configurations
: testingConfigurations
Factory
: contain Mock and testingDependencies
Scene
: contain testing allBase
file andWeatherForecastViewModel
RxSwift
/RxCocoa
: Reactive Programming in SwiftRxDataSources
: UITableView and UICollectionView Data Sources for RxSwiftRxKeyboard
: Reactive Keyboard in iOSRxReachability
: RxSwift bindings for ReachabilityAction
: Abstracts actions to be performed in RxSwiftSnapKit
: Autolayout DSLQuick
: A BDD framework for Swift and Objective-CNimble
: A matcher framework for your testsRxBlocking
/RxTest
: Testing your Reactive code
- Install Xcode (MacOS)
- Install
CocoaPods
by following guide: https://guides.cocoapods.org/ - Open
Terminal
at root project dir - Type
pod install
- Launch
OpenWeatherClient.xcworkspace
and pressRun
button.
- Programming language: Swift
- Design app's architecture: MVVM
- UI should be looks like in attachment.
- Write UnitTests
- Acceptance Tests
- Exception handling
- Caching handling
- Accessibility for Disability Supports:
- Entity relationship diagram for the database and solution diagrams for the components, infrastructure design if any
- Readme file includes