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 lookup → every 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/FastAPInlp-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).