项目背景
个人日常需要管理网址收藏、笔记与日记,散落在不同 App 中。Tophoo Life 把网址导航、Markdown 笔记、日历日记和用户管理集中在一个轻量 Web 界面中,通过登录账号实现数据隔离。
当前处于测试阶段:登录页不开放自助注册,测试账号由管理员创建和分发。
功能一览
| 模块 | 当前能力 |
|---|---|
| 用户认证 | 登录、退出登录、修改昵称与手机号、JWT 访问令牌 |
| 用户管理 | 管理员专属;搜索、分页、新增、编辑、启用/禁用、删除普通用户 |
| 网址导航 | 分类、常用网址、关键词搜索、分类和网址上移/下移排序 |
| 我的笔记 | 多笔记模块切换、独立分类树、Markdown 编辑/预览、表格渲染、MD/PDF 导出 |
| 我的日记 | 月历浏览、已记录日期高亮、详情阅读、独立沉浸式新增和修改页面 |
界面与使用说明
用户与权限
- 每个用户只能访问自己的网址、笔记与日记数据;
- 普通用户可维护自己的内容和个人资料;
- 管理员拥有普通用户全部能力,并可进入「用户管理」;管理员可管理账号,但不会直接读取其他用户的私有内容;
- 管理员账号不可删除;当前管理员不可禁用自己。
网址导航
- 顶部「管理模式」开关控制编辑操作;
- 管理模式开启后可新增分类、原地修改分类名称、增删网址、上移/下移调整顺序;
- 搜索框直接以「搜索结果」列出所有匹配网址,不再按分类重复展示。
我的笔记
- 一个用户可创建多个独立笔记模块;顶部标签栏一键切换,分类树与笔记内容随模块同步;
- 左侧资源管理器风格树状目录:管理分类开关、一键展开/收缩、原地改名、新增子分类、同级排序;
- 右侧「管理笔记」独立控制新建、修改、删除与排序;
- 笔记以原始 Markdown 保存,支持「编辑/预览」切换;预览支持标题、粗体、链接、列表、待办、引用、代码块与标准表格;
- 选中分类可导出该分类内容为
.md或.pdf。
我的日记
- 首页月历视图,
‹ / ›切换月份;写过日记的日期高亮,点击进入详情阅读页; - 每位用户每天只能保存一篇日记,同一天再次记录请修改已有日记;
- 新增、修改、查看均使用独立大页面,便于沉浸式书写与阅读。
技术栈
- 后端:FastAPI、SQLAlchemy 2.x、Pydantic
- 数据库:MySQL 5.7+ / 8.0+;未配置时可使用 SQLite 本地体验
- 前端:Jinja2、原生 JavaScript、CSS
- 导出:Markdown、ReportLab PDF
- 测试:pytest
设计亮点
- 数据隔离:所有业务数据关联用户 ID,后端基于当前登录账号限定读写范围,防止跨用户访问;
- 表命名约定:单数表名(
user、website、notebook、note、diary),字段带表名前缀(user_id、website_name); - 启动建表:
Base.metadata.create_all()创建不存在的表;正式环境建议接入 Alembic 迁移。
状态与 Roadmap
- 当前状态:测试阶段,账号由管理员分发;
- Roadmap:Alembic 数据库迁移、自助注册、全文搜索与标签体系、移动端适配。
个人自研小工具,欢迎交流:联系我。