I use MVP architecture in this demo. it is very common design pattern
you can find Model/DataPorvider/Views
View : The view now consists of both views and view controllers, with all UI setup and events.
DataPorvider : It will be in charge of all the logic , including network / transform the data to model whice match to the view for update
Model : a constant struct always be a datasource for the views