一句话定位

本地优先的 Markdown 笔记 + 清单待办:一套代码,Web 与 Electron 桌面双形态;运行时零依赖后端,可选 S3 / WebDAV 同步。

问题背景

常见笔记工具要么绑定云账号、格式封闭,要么桌面与 Web 两套逻辑。希望数据默认在本地、Markdown 可读可迁移,又能按需同步,而不必自建重型后端。

核心能力

编辑与整理

  • Markdown 即时预览:CodeMirror 6 Decorations 隐藏语法符号,光标进入节点时源码显形;边写边看排版结果。
  • 双模式:笔记 / 待办共用编辑内核与存储;全文搜索、置顶、收藏、标签、三种排序。
  • 待办聚合:自动汇总笔记正文里的 - [ ],勾选回写原笔记并可直达出处;清单分组、截止日、优先级、重要标记。

形态与同步

  • 桌面:Electron 内嵌同一后端(随机端口 + 本机回环),系统托盘随主题切换。
  • Web:node server.js 即可;亦可双击 index.html 仅用 localStorage。
  • 可选同步:S3(SigV4)或 WebDAV(坚果云 / Nextcloud / 群晖);条目级合并,误删可用「从云端恢复」。

典型使用场景举例

  1. 本机日记与清单:桌面端写 Markdown 笔记,待办视图筛「今天 / 重要」,数据在用户目录,不依赖账号。
  2. 跨设备备份:开启 WebDAV「保存即上传」,笔记本与台式机条目级合并。
  3. 快速试用:clone 后 npm run web,浏览器访问默认端口,无需安装桌面包。

技术栈与架构要点

层选型
编辑器CodeMirror 6 + @lezer/markdown(GFM),esbuild 打成 vendor/cm6.js
前端原生 JS,无框架构建步骤
后端Node 原生 http,零第三方运行时依赖
桌面Electron(内嵌后端 + preload)

安全上默认只监听 127.0.0.1、请求体限大小、静态路径防越界、页面 CSP;后端零鉴权故刻意收窄暴露面。

截图

笔记(浅色)

待办(浅色)

笔记(深色)

源码链接

→ https://github.com/myyyisbest/jianji