App项目实战之路(一):概述篇

原创文章,转载请注明:转载自Keegan小钢数据库

并标明原文连接:http://keeganlee.me/post/practice/20160807安全

微信订阅号:keeganlee_me服务器

写于2016-08-07微信


App项目实战之路(一):概述篇架构

App项目实战之路(二):API篇app

App项目实战之路(三):原型篇工具

App项目实战之路(四):UI篇post


我计划作一款App产品,包括Android和iOS,作完打算将Android和iOS客户端的代码开源,并将上架到应用宝和AppStore,以后还会不断迭代。而在作这款产品的过程当中,我会尽可能将一些相关的思考、决策、心得总结等整理成文分享出来。这个周期将会比较长,所以,文章我将以连载的方式发布。学习

项目简介

产品定位为垂直于程序猿的社交App。前期的社交性会偏弱,功能上会有点相似于微博。但我打算将发布内容分为两类:问答分享问答相似于StackOverflow的技术问答,程序猿能够发布技术问题,其余程序猿能够提供解答。分享则能够发布程序猿平时的生活趣事、学习笔记和技术文章等。用户关系则打算采用和微博同样的单向关注关系。另外,对每一个用户会增长技术栈标签的设置。程序猿能够查看到与本身同技术栈的其余程序猿发布的内容,即便没有关注关系。字体

整个项目会涉及到原型设计、UI设计、API设计、移动端开发、服务端开发、服务器选型、应用上架,我打算所有本身一我的搞定,至少坚持到完成初版的上架以后,才再考虑是否邀请其余人加入一块儿搞。

原型设计我采用墨刀,一款在线的原型设计平台,上手很是简单。网站还提供了视频讲解的新手教程,很是方便。

UI设计我打算采用Sketch,一款专为UI设计而生的工具。据闻能够智能标记字体大小、颜色、间距等。也自带了很是方便的切片工具,能够轻松将一个图标导出为适配Android和iOS的各类尺寸。不过,目前还没上手。另外,目前也正在学习色彩搭配相关的设计知识。

API我打算采用RESTFul架构,分别用POST、PUT、GET、DELETE方法对资源作CURD操做。使用RESTFul的难点在于如何定义好各类资源的表述,即URI的定义。

移动端开发则打算初版只用原生实现,可能Android和iOS同步开发,即开发完Android的一个页面后,就开发iOS的同个页面。另外,iOS开发打算用Swift,尽可能不用OC。

服务端开发打算用Spring Boot,数据库可能选用MongoDB。

服务器选型则还没想好,但应该也是在AWS和阿里云之间选一个。

应用上架,iOS上App Store是必须的了;而Android目前只考虑应用宝,其余市场上不上,到时再决定,这个能够不急。

功能需求整理

App初版的功能需求,我想最简化,只实现核心功能必需的,其余功能,能不要就不要。最初时,我整理出的功能需求以下:

  1. 手机号 + 短信验证码注册
  2. 手机号 + 短信验证码登陆
  3. 微信登陆
  4. 上传图片
  5. 修改头像
  6. 修改昵称
  7. 设置用户技术栈标签
  8. 获取同栈之猿的内容列表
  9. 获取关注之猿的内容列表
  10. 获取同栈的用户列表(未有关注之猿时获取)
  11. 发布问题
  12. 发布分享
  13. 关注某条内容
  14. 取消关注内容
  15. 获取内容的评论列表
  16. 添加评论
  17. 回复评论
  18. 点赞评论
  19. 关注某用户
  20. 取消关注某用户
  21. 获取某人详细资料
  22. 获取某人的发布内容
  23. 获取某人关注的人
  24. 获取某人的粉丝列表
  25. 获取个人消息
  26. 提交意见反馈
  27. 退出登陆

首先,注册登陆我并无使用密码的方式,而只使用短信验证码。主要是由于登陆密码会引起一些麻烦的问题,好比如何安全传输?如何安全保存?2011年的CSDN、天涯、世纪佳缘等网站的“密码外泄门”,和2014年的携程“泄密门”,都证实了直接保存私密信息是不安全的。所以,我干脆不使用登陆密码了。并且,由于没有登陆密码了,相应的也不须要提供修改密码和重置密码的功能了。

接着,再考虑手机号 + 短信验证码的注册登陆方式,其实也有问题:明显依赖于短信平台的稳定性和及时到达率。虽然有些平台提供了免费的短信验证码服务,但这些平台基本存在不稳定的状况,常常会出现收不到短信或隔好久才收到短信的状况。而稳定快速的短信平台都是按条数收费的,这成本有点高。那么,干脆点,取消手机号注册登陆的方式算了,只要有微信登陆就够了。

另外,由于微信登陆后就能够得到用户的头像和昵称了,那么,其实,修改头像和修改昵称的功能其实也能够不须要了。

那么,最后整理的功能需求能够以下:

  1. 微信登陆
  2. 设置用户技术栈标签
  3. 获取同栈之猿的内容列表
  4. 获取关注之猿的内容列表
  5. 获取同栈的用户列表(未有关注之猿时获取)
  6. 发布问题
  7. 发布分享
  8. 关注某条内容
  9. 取消关注内容
  10. 获取内容的评论列表
  11. 添加评论
  12. 回复评论
  13. 点赞评论
  14. 关注某用户
  15. 取消关注某用户
  16. 获取某人详细资料
  17. 获取某人的发布内容
  18. 获取某人关注的人
  19. 获取某人的粉丝列表
  20. 获取个人消息
  21. 提交意见反馈
  22. 退出登陆

写在最后

目前的进度就是完成了原型设计,并整理好了功能需求。对了,还有设计好了App Logo。接下来要作的就是根据功能需求设计REST API。


扫描如下二维码便可关注订阅号。

相关文章
相关标签/搜索