Skip to content

aatrooox/zotepad

Repository files navigation

ZotePad

ZotePad 是一个基于 Tauri v2Nuxt 4 构建的本地优先(Local-First)跨平台笔记应用。

这是我Vibe Coding的产物,一边是支持自己日常的使用场景;一边也是探索 Tauri V2 多端应用的稳定性,这个壳子可以用于稳定二开其他多端App。

这个应用的主题是:记录、分享、连接、通知、获取、成就

这几个关键词贯穿了我现在以及未来全部的使用场景,围绕这些关键词,我会尽可能的保持精简和易用。

说人话,我写文章就会拓展写文章的功能,我做副业就会增加做副业的工具 为自己所用

版本

想体验的小伙伴,请选择最新版本,未发布1.0.0前,一定存在或大或小的bug

核心特性

1. 优化的 Markdown 写作体验

集成 md-editor-v3 内核,专注于提升写作流畅度。

  • 自动化图床:解决了 Markdown 写作中图片管理的痛点。支持粘贴或选择图片后自动上传至腾讯云 COS,并自动插入链接。
  • 实时预览:所见即所得的编辑体验。

2. 深度适配移动端

虽然是混合开发应用,但在移动端交互上下了很大功夫。

  • 原生级适配:精确处理了刘海屏、动态岛等 Safe Area 布局。
  • 符合直觉的交互:在移动端自动切换为底部导航(Tab Bar)和抽屉式(Bottom Sheet)菜单,支持手势操作,确保单手使用的便利性。

3. 数据自主与混合存储

  • 本地优先:核心数据(笔记、索引)存储于本地 SQLite 数据库,不依赖第三方云服务,确保数据完全私有且离线可用。
  • 混合架构:文本数据本地存储,大文件(图片/附件)云端存储,平衡了隐私安全与存储体积。
  • 局域网同步:支持在局域网内将桌面端作为服务器,与移动端直接同步数据,无需经过公网。

4. 记录激励系统

内置了一个轻量级的成就系统。通过统计字数、记录天数等维度计算经验值(EXP),为单纯的记录过程增加一些正向反馈。

技术栈选型

本项目采用了一套现代化的混合开发技术栈,旨在平衡开发效率与应用性能:

模块 技术选型 考量
App Shell Tauri v2 (Rust) 相比 Electron 拥有更小的体积和更低的内存占用,且 v2 版本原生支持 Android/iOS。
Frontend Nuxt 4 (Vue 3) 利用 Nuxt 的自动导入和模块化特性极大提升开发效率,配合 Vue 3 Composition API 处理复杂逻辑。
UI System Tailwind CSS + Shadcn 实用主义的样式解决方案,保证了多端 UI 的一致性与美观度。
Database SQLite 成熟可靠的嵌入式关系型数据库,适合本地数据持久化。
Animation GSAP 处理复杂的 UI 过渡动画,提升应用的精致感。

公众号草稿箱(自动化工作流)

目标:让 Agent / CLI 在不操作 GUI 的情况下,把本地 Markdown 文章导出为“公众号可用的富文本 HTML 片段”,并交给 z-cli 写入公众号草稿箱。

工作流概览

  1. OpenClaw/脚本向 ZotePad 发送“打开文件”指令(带绝对路径)
  2. ZotePad 进入 /preview 页面:自动加载该 Markdown → 渲染 → 导出 HTML 片段文件
  3. z-cli 读取该 HTML 文件(--html-file)并创建公众号草稿

HTML 导出约定

  • 导出目录(默认):
    • /Users/aatrox/.openclaw/workspace/zotepad-exports/html/
    • 可用环境变量覆盖:ZOTEPAD_EXPORT_DIR
  • 导出文件名:{slug}.html
    • slug 优先取 frontmatter 的 slug 字段;否则回退为文件名
  • 索引文件(便于自动化确认导出完成):
    • /Users/aatrox/.openclaw/workspace/zotepad-exports/html/index.json
    • 记录 slug -> { htmlPath, sourcePath, updatedAt }

远程触发(桌面端)

桌面端内置一个本地 HTTP Server(默认端口 54577),可用于自动化触发打开文件:

curl -X POST "http://127.0.0.1:54577/preview/open" \
  -H "authorization: zotepad-dev-token" \
  -H "content-type: application/json" \
  -d '{"path":"/abs/path/to/article.md"}'
  • 授权 token:环境变量 ZOTEPAD_SYNC_TOKEN(未设置时默认 zotepad-dev-token

用 z-cli 写入公众号草稿箱

z-cli 的 wx draft 支持直接读取 HTML 片段文件:

z wx draft \
  -t "文章标题" \
  --html-file "/Users/aatrox/.openclaw/workspace/zotepad-exports/html/my-slug.html"

说明:

  • --photos 可选;如果 HTML 里包含 <img src=...>,z-cli 会尝试提取并上传素材,再替换为微信 URL。
  • 如果 HTML 中完全没有图片,z-cli 可能会要求至少提供一张图作为封面素材(按实现逻辑)。

快速开始

如果你对这个技术栈感兴趣,或者想部署一套自己的私有笔记系统:

环境准备

  • Node.js (v18+)
  • pnpm
  • Rust (最新稳定版)
  • Android Studio (仅 Android 开发需要)

运行项目

  1. 克隆仓库

    git clone <your-repo-url>
    cd zotepad
  2. 安装依赖

    pnpm install
  3. 启动开发环境

    # 桌面端
    pnpm tauri dev
    
    # Android 端 (需连接真机或模拟器)
    pnpm tauri android dev --open

构建与发布

项目配置了基于 GitHub Actions 的 CI/CD 流程。

  • 自动构建:提交信息包含 chore(build): release vX.Y.Z 时触发。
  • 多端产物:自动生成 Windows (.msi/.exe), macOS (.dmg) 和 Android (.apk) 安装包。
  • 版本管理:推荐使用内置脚本管理版本:
    pnpm quick-release-patch-auto

Android 签名说明

为了生成 Release 版 APK,需配置本地 Keystore。 详细配置请参考 src-tauri/keystore.properties 文件注释。CI 环境需在 Secrets 中配置 ANDROID_KEYSTORE_BASE64 等变量以实现自动签名。


欢迎提交 Issue 或 PR,共同完善这个小工具。

About

记事本及其上下游工作流工具

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Generated from aatrooox/tauri2-nuxt4-app