磁盘上的代号是
Otium(~/Develop/projects/Otium/)。产品域名:lucernaread.com。
一款以阅读为先、面向精读的语言学习应用:上传 EPUB/PDF/文本 → 在分页阅读器中阅读,配一个逐页生词侧栏 → 点击任意单词即可获得 LLM 词典查询 → 已保存单词的所有变形形式都会在页面上加下划线 → 通过间隔重复(SM-2)复习已保存的单词 → (桌面端)生成带逐词卡拉OK式高亮的本地 TTS 有声书。
概览
- 多仓库(poly-repo)结构,约 12 个并列的 git 仓库(不是 npm workspace——没有根级
package.json/pnpm-workspace/turbo)。把它们凝聚在一起的是一个私有 Verdaccio 注册表(npm.lucernaread.com),发布两个供各 shell 使用的共享包。 - 与框架无关的 TS 领域核心(
@lucerna/core),采用整洁架构(clean architecture)/ DDD 分层;各 shell 都很薄。 - Shell: Next.js 15 web · Electron 桌面端(此前是 Tauri)· Payload-CMS 落地页。
- 后端: 两个 Go/echo 服务(
auth、mainbackend)+ 一个 Python/FastAPI 的nlp-api,数据库用 Postgres;部署在 Coolify 上,资源存放在 Cloudflare R2。
子项
- architecture —— 完整地图:多仓库结构、核心的分层、各 shell、后端、"以阅读为先"的功能到代码映射,以及 Sijie 记录的设计模式(Facade-of-Strategy、Builder+Flyweight)。