10年产品经理手把手教你做产品:怎么设计一款效率管理(任务清单)
任务管理工具大家用的比较多,比如滴答清单,奇妙清单等,但是如果让我们自己设计并开发一款任务清单,那么应该怎么做呢?先上图.本文以笔者开发的天天任务清单为例来说明该问题。
一、需求设计
一般来说,一款任务管理工具包括如下几点需求
1、能够支持快速地发布任务。发布任务只需要填写一段文字就可以了
2、能够发布比较复杂的任务。比较复杂的任务包括任务截止时间设置,任务优先级设置等等,一些任务还需要每天自动生成。
3、任务需要分类,便于查看,该需求主要考虑到工作和生活相分离。
4、已经完成了的任务要和尚未完成的任务有所区分
5、任务需要支持账户同步功能,即同一个帐号,登录后数据应该保持一致。
6、系统登录尽量简单快接。
二、概要设计
1、系统前端采用框架
可以备用的方案有app,小程序,微信公众号+h5,考虑开发成本和用户体验,我们觉得可以用小程序来解决,主要原因是因为小程序相比H5体验更好,相比app无需安装。
2、系统后端支持
后端语言可以采用php,java或者go,数据库可以选用mysql 或者sqllite。在本系统中,我们将用go做系统开发语言。因为go支持自定义cron定时器,而又相比与java轻巧很多。
3、数据如何同步
本系统我们设计了本地存储和网络存储共存的形式。系统提供手动或者自动同步功能,将本地的数据与服务器上的数据同步。
三、详细设计
1、数据库结构设计
在本系统中我们提供三张表,包括用户信息表t_user,任务信息表t_task,定时任务表t_schedule,任务分类表t_cate.具体表结构如下
t_user :
用户编号id,用户名username,用户密码passwd,用户昵称nickname,用户头像avatar,用户登录凭证ticket。
t_task
任务编号id,任务内容memo,任务优先级pri,任务截止时间deadline,任务状态stat,所属用户userid。
t_schedule
任务编号id,任务内容memo,任务优先级pri,任务截止时间deadline,任务状态stat,所属用户userid,任务产生cron表达式cron,
t_cate.
分类编号id,分类名称name,所属用户userid,面板状态stat
2、定时任务实现
我们采用cron表达式形式,后端采用go语言的好处也在这里,go语言本身可以编译成服务器,无需宿主程序,我们可以通过自定义cron表达式来支持定时任务,而php则不行。
3、前端小程序编码
我们需要将常用的工具函数封装到util包中,并注入到app上下文。另外我们需要将任务管理相关函数封装成js
四、编码
目前该程序已经开源,
具体前端代码地址
http://www.imwinlion.com/archives/category/opensource
后端代码地址正在整理
五、测试
如有bug请联系我
作者简介:胡文林,持续创业者,长期从事技术开源工作。微信号jiepool-winlion