Original article, reproduced please specify: Reproduced from Keegan Small Steel

And indicate the original link: http://keeganlee.me/post/practice/20160807

Wechat subscription number: keeganlee_me

Written in the 2016-08-07


Road of App Project actual combat (I): Overview

Road of App Project combat (II):API chapter

Road of App project actual combat (3): Prototype

The road to App project combat (4):UI


I plan to make an App product, including Android and iOS. After that, I plan to open source the code of Android and iOS clients and put it on The AppStore and AppStore. After that, I will continue to iterate. In the process of making this product, I will try my best to sort out and share some relevant thinking, decisions and conclusions. This cycle will be quite long, therefore, I will publish the article in a serialized way.

Project introduction

The product is positioned as a social App perpendicular to the program ape. Early social will be weak, the function will be a bit similar to microblogging. But I’m going to split my posts into two categories: Q&A and share. Q&a is similar to StackOverflow’s technical Q&A, in that application monkeys can post technical questions and other application monkeys can provide answers. Sharing can release the program monkey’s daily life, learning notes and technical articles. The user relation intends to adopt the same one-way concern relation as microblog. In addition, the technology stack label Settings are added for each user. Programmers can see content published by other programmers in their stack, even if there is no concern.

The whole project will involve prototype design, UI design, API design, mobile terminal development, server development, server selection, and application launch. I plan to do it all by myself, at least until I finish the first version of the launch, and then I will consider whether to invite others to join us.

Prototype design I use ink knife, an online prototype design platform, very easy to get started. The site also provides a video tutorial, which is very convenient.

UI Design I’m going to use Sketch, a tool designed specifically for UI design. It is said that it can intelligently mark font size, color, spacing, etc. It also comes with a handy slicing tool that makes it easy to export an icon to various sizes for Android and iOS. Not yet, though. In addition, I am also learning the design knowledge related to color collocation.

API I intend to use RESTFul architecture, respectively with POST, PUT, GET, DELETE methods to do CURD operations on resources. The challenge with RESTFul is to define the representation of various resources, namely the DEFINITION of urIs.

Mobile terminal development is going to the first version only native implementation, possibly Android and iOS synchronous development, that is, after the development of an Android page, the development of the same iOS page. In addition, iOS development is intended to use Swift rather than OC.

Spring Boot will be used for server development, and MongoDB may be used for database.

The server selection has not been decided yet, but it should be between AWS and Ali Cloud.

The App Store on iOS is a must; Android only considers App Treasure at present, not in other markets, then decide, this can not be urgent.

Functional requirements sorting

As for the function requirements of the first version of App, I think it is the most simplified, only realizing the essential core functions, and discarting other functions if possible. Initially, I sorted out the functional requirements as follows:

  1. Mobile phone number + SMS verification code to register
  2. Mobile phone number + SMS verification code login
  3. WeChat login
  4. To upload pictures
  5. Modify the picture
  6. Modify the nickname
  7. Sets the user technology stack TAB
  8. Gets the content list of apes in the same stack
  9. Get a list of apes of interest
  10. Get the list of users on the same stack (get if there is no ape to follow)
  11. Post questions
  12. Issued share
  13. Focus on a piece of content
  14. Unfollow content
  15. Get a list of comments on the content
  16. Add comments
  17. Reply to comment
  18. Thumb up comments
  19. Follow a User
  20. Unfollow a user
  21. Get someone’s details
  22. Get someone’s posts
  23. Someone who gets someone’s attention
  24. Get a list of someone’s followers
  25. Get my news
  26. Submit feedback
  27. Log out

First of all, I did not use a password to register and log in, but only use SMS verification code. Mainly because login passwords raise troubling questions, such as how to transfer them securely. How to store it safely? In 2011, CSDN, Tianya, Jiayuan and other websites “password leakage gate”, and in 2014, Ctrip “leak gate”, all proved that it is not safe to directly save private information. Therefore, I don’t use login passwords at all. Also, since there is no login password, there is no need to provide the function to change and reset the password.

Then, consider the registration and login method of mobile phone number + SMS verification code, in fact, there are problems: obviously depends on the stability of SMS platform and timely arrival rate. Although some platforms offer free SMS verification code services, these platforms are generally unstable, and messages are often not received or received after a long time. Stable and fast SMS platforms are charged by the number of messages, which is a bit expensive. So, simply point, cancel the mobile phone number registration login method calculated, as long as there is wechat login is enough.

In addition, because wechat login can obtain the user’s profile picture and nickname, so, in fact, modify the profile picture and modify the nickname function actually can not need.

Then, the final functional requirements can be as follows:

  1. WeChat login
  2. Sets the user technology stack TAB
  3. Gets the content list of apes in the same stack
  4. Get a list of apes of interest
  5. Get the list of users on the same stack (get if there is no ape to follow)
  6. Post questions
  7. Issued share
  8. Focus on a piece of content
  9. Unfollow content
  10. Get a list of comments on the content
  11. Add comments
  12. Reply to comment
  13. Thumb up comments
  14. Follow a User
  15. Unfollow a user
  16. Get someone’s details
  17. Get someone’s posts
  18. Someone who gets someone’s attention
  19. Get a list of someone’s followers
  20. Get my news
  21. Submit feedback
  22. Log out

Write in the last

The current progress is in prototyping and sorting out the functional requirements. Oh, and the App Logo. The next step is to design the REST API based on the functional requirements.


Scan the following QR code to follow the subscription number.