2026-09-23·by Sijie Wang#node#lucerna#software

lucerna

磁盘上的代号是 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 服务(authmainbackend)+ 一个 Python/FastAPI 的 nlp-api,数据库用 Postgres;部署在 Coolify 上,资源存放在 Cloudflare R2。

子项

  • architecture —— 完整地图:多仓库结构、核心的分层、各 shell、后端、"以阅读为先"的功能到代码映射,以及 Sijie 记录的设计模式(Facade-of-Strategy、Builder+Flyweight)。
about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →

lucerna