DySi Open uses Dynamic Signal's one public api to get data.
Time Spent: Friday May 4 to Tuesday May 8
Majority of time taken by:
- Learning about MVVM framework
- Learning about unit testing in iOS
- Getting started with Texture
- Create a new empty project in Xcode.
- Setup Git for this project and link it to your personal account, make a first commit.
- Using a framework of your choosing (native or 3rd party), make a call to Dynamic Signals public api. The response will be a JSON array of post objects. You can see what these objects look like here.
- Using Texture framework, render the following for each post:
- author (including profile image if it exists)
- title
- description
- creation date
- post’s image (if exists in the “media” array)
- Clicking on each post should open the post’s "permalink” in a webView.
- Neat UI that should look decent and work on different screen sizes + landscape mode: Thanks to Texture
- Implement pull-to-refresh.
- Implement caching mechanism for the server response: Default with
Alamofire
- Implement caching mechanism for images: Defaults with
PINCache
- User sees an alert when there's a networking error.
- User sees a loading state while waiting for posts to load.
- User sees images being rendered progressively as it gets downloaded.
- User sees Launch Image when they open the app
- User sees a view with a message when the table does not have any posts to show. User will not see empty table cells.
- User sees alert when no internet while loading webpage of the permalink
- User sees progress indicator at either below the navigation bar or at the bottom of the screen signifying a loading page when the web page of the permalink is being loaded
- Not a feature (actually a discouraged action): overrode SSL requirements
so users can view resources from links that use
HTTP
(since there were images that usedhttp
)
- Utils/ErrorHandler
- Models/DySiPost
- Models/DySiPostAuthor
- ViewControllers/ViewModels/AllPostsTableViewModel
- ViewControllers/ViewModels/PostTableNodeCellViewModel These above mentioned unit tests are not comprehensive, but are there to show that the code is testable
- Testing for Managers/DySiDataManager
- Higher test coverage
- UI testing