前段时间闲的慌,严重精神内耗,遂做了这个软件。
项目介绍
此软件是模仿微软ToDo做的一款桌面代办软件,目前支持在Windows平台和Linux平台运行。
已良好运行好几个月,写篇文章记录一下。
前端部分
技术栈
采用主流的Vite、Vue3、NaiveUI、pinia、Electron、Ts等技术搭建的。
图标库采用的IconPark。安装了electron-updater,可以自动更新。
特性
- 使用
WebSocket与后端通信,用于获取通知。首次打开软件,会获取一个ws-key,这是后台用来识别当前用户的socket链接的id。后端发送消息都是基于ws-key。 - 自动更新。不需要每次更新都去手动下载安装包安装
- 自定义主题,暗色亮色主题色,随心所欲
- 可设置开机自启
- 待办页每天都有精美壁纸,随心换(可能需要科学上网)
- 完全不会收集用户的隐私信息,只需要一个邮箱注册。
使用示例
基本操作
主题切换
菜单设置
小窗模式
技术难点
我觉得在前端部分中,最难的就是左侧目录拖动,和待办列表页的标题设置。前前后后改过很多次。
拖动部分示例代码
列表页的标题设置
列表页的背景,先加载缩略图,再切换至大图
后端部分
技术栈
后端是使用NestJs,Redis,MongoDB,log4js等技术搭建的。全量使用TypeScript。
特性
- 定时任务,每天0点获取8张超清背景图片
- 手动添加定时任务,创建的待办只要有合理的提醒时间,到时就会通知
- 日志系统,系统每个模块都有日志,BUG溯源很简单
技术难点
一个是数据库设计,每次设计出来总有点不合适。一个是代码结构组织,总想让结构很优雅。最重要的socket连接,本地测试好好的,部署到nginx就不行了,搞了一晚上才发现没有配置nginx转发websocket😭
总结
这个项目也算是自己从0到1独立开发的吧。前端部分还好,有经验。后端部分完全就是天天翻文档😂,nestjs官网翻遍了。还有就是服务器部署和自动更新。
做完之后发现还是收获了很多东西。像拖拽API,vue的自定义指令,websocket心跳连接,electron主进程和渲染进程的通信,electron打包和自动更新,eventBUS,nestjs框架,数据库的操作,日志系统等。
最后,项目地址github
喜欢的话,给个一键三连🥰