This is coding assignment for Binance tech interview.
@copyright Huu Tai Vuong - vhuutai@gmail.com
- Xcode 12.5
- Swift 5
- OrderBook
- Market history
- Real-time data update with websocket
- Unit Test
- Loading state and error handling
- Pull to refresh
- Readme
- UI Test
This project using MVVM-Interactor architecture with below technical highlights :
- MVVM - Interactor as main architecture, powered by RxSwift behind the scene.
- Utilize Protocol Oriented Programing and Dependency Injection for Unit Test.
- RxBlock for testing RxSwift Observable part and Mockingjay for stubbing network request.
- CLEAN architecture with Interactor taking care of business logics and separate it from ViewModel which is responsible for UI logics.
- XCTest for unit testing with mock and stub techniques.
- SocketManager was built from scratch, integrated with RxSwift and using StarScream as WebSocket client.
- Use propertyWrapper to handle threadsafe in read/write property @ThreadSafety
- Possibility to customize app theme at one place.
- Using cocoapods as package manager.
- Unit testing code coverage.
Splash screen | Order Book | Market History |
---|---|---|
![]() |
![]() |
![]() |