In this project I am going to demonstrate how structure a flexible, reusable, scalable project. although there is no silver ball, maybe it's a way to make it better.
- Remove SwiftInstagram 3rd party
- Exact pure model definition from SwiftInstagram
- Exact raw model into Entity
- Add additional custom functionality to the Model, such as calculation, combine fields etc.
- Define clear protocol for Viewmodel <-> View <-> Controller, especially TableView or CollectionView
- Define clear protocol for Model <-> Data Provider <-> Api client
- Define clear protocol for Router, Notification to handle events like login, logout, page transformation etc.
- Define clear protocol for page click event to handle event flow to support interaction, track etc.
- Loading diff quality picture to show depends on user's Network env.
- Image render, compress picture size as much less as possible.
- Dynamic setting up heigh of cell to fit diff pic size. hence cache height of row is required.
- No-block things on main thread while rendering the cell, place heavy calculate to the other thread.
- Supports fastlane
- Supports travis