The code is an iPhone app which looks like Wechat Moments page.
We have some requirements during building this app, and you should also try to follow these requirements:
- Node.js version 12.0+ Download
- npm - via Node.js installer or nvm
- Locate the current directory in terminal
- Start backend server
- Execute
npm install -g mountebank
- Execute
mb --configfile imposters.ejs
and keep the terminal open.
- Execute
- Start the iOS application
- Open
WeChatMoments.xcodeproj
in the current directory and ensure that SPM (Swift Package Manager) frameworks are ready - Run the project and make sure the app can start correctly (don't worry about if the features are not working properly)
- Open
- To validate your setup, please check items below.
Expected app screen | Expected log that produce by step 2.ii |
---|---|
The below screenshots are from Wechat App, they are for reference/inspiration these do not represent the actual output from the given codebase.
- The project is an iPhone app which looks like Wechat Moments page.
- The page consists of profile image, avatar and tweets list
- For each tweet, there will be a sender, optional content, optional images and comments
- A tweet contains from 0 to 9 images
- Pulling down table view to refresh, only first 5 items are shown after refreshing
- All tweets are fetched and stored in memory at the first time and only show first 5 of them at the beginning and after refresh.
- Show 5 more while user pulling up the view at the bottom of the table view.
- Supports layout on all kinds of iOS device screen and orientation.
- This is a static page.
- The data JSON will be hosted at localhost:2727
- An example of the response in
WeChatMomentsTests/Resources/Tweet.json
- Layout using swiftUI
- Unit tests are appreciated.
- Functional programming is appreciated
- Utilise GCD for multi-thread operation
- Only binary, framework, Cocopods or SPM dependencies are allowed. do not copy other developer's source code(
*.h
,*.m
,*.swift
) into your project - Keep your code clean as much as possible Production and Technical requirements are weighing equally in the final result.