Skip to content

Description: Language: Swift Architecture: MVVM + Combine UI: UIKit (built programmatically with declarative approach)

Notifications You must be signed in to change notification settings

mrPronin/mvvm-uikit-demo

Repository files navigation

mvvm-uikit-demo

MBition tech challenge

Description:

  • Language: Swift
  • Architecture: MVVM + Combine
  • UI: UIKit (built programmatically with declarative approach)

Implementation details:

  • namespaces
  • service layer:
    • generic network / endpoints
    • generic cache (with image cache implementation);
    • image loader;
    • user list service;
    • user details service;
    • universal logger;
  • codable models
  • UI-agnostic view models
  • UI:
    • pull-to-refresh on user list
    • user avatar placeholder
    • in-memory user avatar caching
  • helpers:
    • generic & reactive pagination (UISource, Sink)
    • universal UI for error handling (BannerView)
    • reusable Combine extension
    • universal activity indicator
  • tests:
    • unit tests for view models
    • unit tests for services
    • unit tests for pagination
    • integration and unit-tests for the network
    • bare minimum testing for view controllers and views

Potential improvements:

  • add splash-screen
  • generic navigation approach + unit-tests
  • generic font scheme to support white-label
  • network availability + UI
  • support landscape device orientation
  • CI / CD

About

Description: Language: Swift Architecture: MVVM + Combine UI: UIKit (built programmatically with declarative approach)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages