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

lucerna

On-disk codename Otium (~/Develop/projects/Otium/). Product domain: lucernaread.com.

A reading-first, intensive-reading language app: upload EPUB/PDF/text → read in a paginated reader with a per-page vocabulary sidebar → click any word for an LLM dictionary lookupevery inflected form of a saved word is underlined across the page → review saved words by spaced repetition (SM-2) → (desktop) generate a local TTS audiobook with word-level karaoke.

Shape at a glance

  • Poly-repo of ~12 sibling git repos (NOT an npm workspace — no root package.json/pnpm-workspace/turbo). Cohesion is a private Verdaccio registry (npm.lucernaread.com) publishing two shared packages consumed by the shells.
  • Framework-agnostic TS domain core (@lucerna/core) with clean-architecture / DDD layering; thin shells.
  • Shells: Next.js 15 web · Electron desktop (was Tauri) · Payload-CMS landing.
  • Backends: two Go/echo services (auth, mainbackend) + one Python/FastAPI nlp-api, over Postgres; deployed on Coolify, assets on Cloudflare R2.

Children

  • architecture — the full map: poly-repo, the core's layers, shells, backends, the reading-first feature→code mapping, and the patterns Sijie documents (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 →