Skip to content

untouchable741/Binance-Assignment

Repository files navigation

Binance-Assignment

This is coding assignment for Binance tech interview.

@copyright Huu Tai Vuong - vhuutai@gmail.com

Specifications

  • Xcode 12.5
  • Swift 5

Checklist

  • OrderBook
  • Market history
  • Real-time data update with websocket
  • Unit Test
  • Loading state and error handling
  • Pull to refresh
  • Readme
  • UI Test

Project overview

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.

Screen Shot 2021-06-28 at 10 21 14 PM

Third parties libraries

Screenshot

Splash screen Order Book Market History
Simulator Screen Shot - iPhone 12 Pro - 2021-06-28 at 21 38 38 Simulator Screen Shot - iPhone 12 Pro - 2021-06-28 at 21 34 31 Simulator Screen Shot - iPhone 12 Pro - 2021-06-28 at 21 34 33

About

This is coding assignment for Binance tech interview

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published