受够了广告和收费,我写了一个开源日记本

3,456 阅读5分钟

项目由来

曾经年少的我为了讨女朋友开心,毅然决然的开始了写日记之路。谁也没成想居然一直写到了现在,回头一看都已经十六万字了。

NW%H)%R10C3)6_R`(D)MFMX.jpg

那我这写的好好的,怎么就突然搞起来自己的日记 app 了呢?

事情还要从上个月说起,当时的我正打算退休用了五年的手机,那手机里的日记肯定要迁移过来。想了想不是有云备份么,点开设置一看,原来收费才能用。好吧也不贵,开个吧,开完了发现嗯?为什么还不能用?折腾了半天,又是上网搜又是找官网,一无所获。最后找到了官方邮箱,抱着试试看的心态发了个邮件,几天后好了...

虽然一整套折腾下来,最后也算是把日记转移到了新手机上,但是心头总感觉憋了口气,换个 app 吧...动不动弹个广告,各种乱七八糟的功能一大堆,实用的却要收费,不收费还干净的倒也有,要么快黄了,要么功能有欠缺。就算找到了,用了半年应用不维护了,还得再转移一趟。

思来想去,得,也别找了,还是干起老本行,自己动手丰衣足食吧。于是,咱这个项目就出来了:

github - cube-diary: 一个简约好看的移动端日记本,无广告不付费

核心功能

一个真正的日记应用都要包含哪些功能呢,我思考之后总结了下:

  • 能写日记
  • 能插图片
  • 导入、导出、备份

插图片这件事在我刚开始写日记的时候是没啥感觉的,后来越来越觉得这个功能实用。毕竟日记就是为了回忆的,有时候你写了一大段还不如贴张照片省事又直观。而我之前用的日记本恰好不支持插图片,搞得我这叫一个心痒啊。

所以我这个日记本的核心只有这三点,写日记、图片、导出导出备份,在加上一些搜索、黑夜模式之类的标配。那些花里胡哨的,比如树洞,阅后即焚,点赞啊之类的咱们就不搞了,看着就让人心烦。

下面随便截了点图,如果你觉得不好看的话,那我给您说声对不起:

功能预览

黑夜模式

眼尖的同学可能已经看出来了,这个日记本是支持 markdown 的,没办法,程序员标配必须支持一手。

怎么使用?

如果你想尝试一下的话,没问题。首先要有一台服务器(树莓派也是极好的),在服务器上安装 node 16+ 以及 yarn,然后 git clone 一下项目,之后把项目里的 .config.example.json 改名为 .config.json,里面的用户名密码改成自己想要的。剩下的就是前端标准流程了:

# 安装依赖
yarn install

# 打包项目
yarn build

# 启动项目
yarn start

整个应用是基于 react nextjs typescript 完成的,想读代码的同学大可放心,注释率非常之高。

关于配置

这个日记本提供了一个还算完善的配置项,毕竟应用体量本来也不算很大,能配置的地方也不多。还是上面的 .config.json,应用里的配置项都可以写在这里,比如多个登录用户啊、改一下登录页的标题副标题啊,主按钮的配色啊,都是没问题的:

{
    "user": [/** ... */],
    // 修改登录页标题
    "appTitle": "我的日记",
    // 将密码长度修改为 8 位
    "passwordLength": 8
}

具体配置项我就不列出来了,这里是配置项的 ts 声明:cube-diary/appConfig.ts,你想了解的都在这里。

关于设计

关于 UI 设计这方面我参考了很多现在市面上的 app,完全摒弃花哨和不实用的设计。90% 的操作(虽然本来就没有多少)都下沉到了页面底部,而主按钮永远在右下角并高亮显示。不得不说还是很舒服的,再也不用担心我愚蠢的大拇指够不到经常用的按钮了。

而备份功能主要是为了缓解我对开发过程中因为 bug 导致数据丢失的焦虑而设计的(毕竟边开发边写日记)。只要编辑过内容,日记就会默认每天凌晨四点进行一次备份(可以自由配置)。而其他对于内容的修改也会进行备份,例如导入日记之前会创建导入备份,而应用备份的时候也会产生回滚备份。

至于隐私问题,应用是只会和自己对应的后端进行通信,也就是说你的数据不会被上传到你的服务器之外的任何地方。并且作为 web 应用,迁移到其他设备也仅仅是在手机桌面上放一个快捷方式的功夫,简直不要太爽。

欢迎 PR

虽然这个应用已经可以满足我的个人需求了,但是依旧欢迎喜欢写日记但又不喜欢当前市面上日记 app 的各位大佬们可以一起贡献代码,star 点不点全凭大家喜欢,总之一句话:

let's make this shit awesome together!