MoKeeText Web 记事本 — 设计文档
日期: 2026-06-23
状态: 已确认
项目概述
一个 Web 记事本工具,包含两个核心模块:
- Markdown 笔记 — 增强型编辑器,类似飞书文档体验
- 网站账号管理 — 网站密码本,智能导入功能
数据存储到 MySQL。
技术选型
| 层级 |
技术 |
理由 |
| 后端框架 |
Python FastAPI |
高性能异步,Python 操作 MySQL 成熟 |
| 模板引擎 |
Jinja2 |
FastAPI 内置支持,服务端渲染 |
| ORM |
SQLAlchemy |
最成熟的 Python ORM,MySQL 支持好 |
| 数据库 |
MySQL |
用户指定 |
| 编辑器 |
Tiptap |
增强型富文本编辑器,支持颜色/图片/表情/表格 |
| 前端交互 |
原生 JS + CDN 库 |
无构建步骤,快速迭代 |
| 样式 |
手写 CSS(飞书风格) |
简洁现代,大量留白 |
数据库设计
文件夹表 (folders)
| 字段 |
类型 |
说明 |
| id |
INT PK |
主键 |
| name |
VARCHAR(100) |
文件夹名 |
| type |
ENUM('note','website') |
文件夹类型 |
| parent_id |
INT FK |
父文件夹(NULL为根) |
| sort_order |
INT |
排序 |
| created_at |
DATETIME |
创建时间 |
笔记表 (notes)
| 字段 |
类型 |
说明 |
| id |
INT PK |
主键 |
| title |
VARCHAR(500) |
标题 |
| content |
LONGTEXT |
Tiptap JSON/HTML |
| folder_id |
INT FK |
所属文件夹 |
| created_at |
DATETIME |
创建时间 |
| updated_at |
DATETIME |
更新时间 |
标签表 (tags)
| 字段 |
类型 |
说明 |
| id |
INT PK |
主键 |
| name |
VARCHAR(50) |
标签名 |
| color |
VARCHAR(20) |
颜色 |
笔记-标签关联 (note_tags)
| 字段 |
类型 |
说明 |
| note_id |
INT FK |
笔记ID |
| tag_id |
INT FK |
标签ID |
网站表 (websites)
| 字段 |
类型 |
说明 |
| id |
INT PK |
主键 |
| name |
VARCHAR(200) |
网站名 |
| url |
VARCHAR(500) |
网址 |
| folder_id |
INT FK |
所属文件夹 |
| created_at |
DATETIME |
创建时间 |
账号表 (accounts)
| 字段 |
类型 |
说明 |
| id |
INT PK |
主键 |
| website_id |
INT FK |
所属网站 |
| username |
VARCHAR(500) |
账号 |
| password |
VARCHAR(500) |
密码(明文,后续加密) |
| remark |
TEXT |
登录说明/备注 |
| created_at |
DATETIME |
创建时间 |
页面路由
| 路由 |
页面 |
/ |
重定向到 /notes |
/notes |
笔记主页 |
/websites |
网站管理主页 |
/api/notes/* |
笔记 CRUD API |
/api/websites/* |
网站 CRUD API |
/api/accounts/* |
账号 CRUD API |
/api/folders/* |
文件夹 CRUD API |
/api/tags/* |
标签 CRUD API |
/api/import/parse |
智能导入解析 |
/api/import/save |
智能导入保存 |
智能导入解析逻辑
输入格式:
解析规则:
- 第1行:按第一个空格分割 → 前半为URL,后半为网站名
- 第2行:账号
- 第3行:密码
- 第4行:备注(可选)
- 根据URL匹配已有网站 → 存在则返回匹配信息,不存在则标记新建
UI 布局
项目结构