Start here. ARCHITECTURE.md is the entry point for technical readers. The vocabulary is in CONTEXT.md and the decisions, with what each one cost, are in docs/adr/.
Read smarter — personal tutors disguised as books.
Books suggested and generated just for you based on your feedback, quiz results, and unique learning style.
Talks about this project live in rsml/talks.
🎥 Watch the talk — "Books that Learn how your Learn"
📖 Read a blog post on how this works
Share a brief profile about how you learn, your preferences, and your prior skills. Or just have the AI interview you and it will fill those out by itself.
Enter any topic and a learning prompt, or let the AI suggest your next book based on your learning profile, preferences, and skills. Tutor generates a table of contents and your first chapter.
~1,500-word chapters, 5–10 min each. Select any text to open an inline AI chat for deeper explanation.
Post-chapter quizzes reinforce retention. A longer quiz at the end of the book synthesizes everything across all chapters.
Give feedback on each chapter. The next one adapts to your quiz results and learning profile. After you finish a book, the AI recommends updates to your skills, preferences, and profile based on your progress.
- Evolving Chapters — Quiz results and feedback shape how future chapters are written
- Smart Review — Spaced-repetition queue re-quizzes you on questions you missed
- Skill Tracking — Automatically track progress and update your learning profile
- Audiobook Narration — Generate offline M4B audiobooks with chapter markers using Kokoro TTS. Multiple voices, speed control, per-chapter Listen button in the reader, and one-click export to Apple Books.
- Inline Chat — Select any text for a deeper AI-powered explanation
- Rich Content — Mermaid diagrams, KaTeX math, and syntax-highlighted code
- Organized Library — Search, filter, sort, tag, group into series, and drag to reorder
- EPUB Import & Export — Read in your favorite e-reader or import books others created
- AI Covers — Generate a unique AI cover for any book
- TOC Revision — Iterate on the table of contents with AI before generating chapters
- Background Generation — Queue all chapters to generate in the background while you keep reading
- Agentic Generation — Built-in MCP server lets Claude Code (or any MCP client) create and edit books programmatically
- GPLv3 Open Source — Inspect and modify the source on GitHub
- BYOK — Bring your own API keys (Claude, ChatGPT, Gemini) and choose your preferred model
- Light & Dark Themes — Switch themes across the entire app
flowchart LR
features["client/features/<br/>feature slices"] --> api["client/api/<br/>typed API client"]
api -->|"HTTP and SSE"| routes["server/routes/<br/>thin routes"]
routes --> services["server/services/"]
services --> ports["server/ports/"]
ports --> adapters["server/adapters/"]
Client feature slices call the server through one typed API client. Routes stay thin and hand off to services, which depend on ports rather than concrete adapters.
See ARCHITECTURE.md for the full five-diagram hub, including how the pieces talk to each other, the server hexagon, the adaptive loop, and the dependency rule.
What each top-level directory is, in one line each.
client/ React renderer, feature slices, one typed API client
server/ Fastify core, thin routes over services over ports over adapters
shared/ Zod domain schemas and contract types both sides import
electron/ desktop shell, window chrome, IPC, embedded server boot
e2e/ Playwright journeys driving the real app on fake adapters
(unit and contract tests are colocated with their source)
scripts/ generators and repo checks, all wired into CI
docs/ ADRs, the generated API reference, screenshots, phase plans
pnpm install
pnpm electron:buildpnpm install
pnpm dev:server # Keep this running one tab
pnpm electron:dev # Run this in a different tab
pnpm test # Run tests
pnpm e2e # Run end-to-end testsSet your Claude, ChatGPT or Gemini API key in Settings (gear icon) on first launch.
| Layer | Choice |
|---|---|
| Language | TypeScript (strict) |
| Frontend | React 19 + Vite |
| UI | shadcn/ui + Tailwind CSS v4 |
| State | Redux Toolkit |
| Backend | Fastify |
| AI | Vercel AI SDK |
| Storage | Filesystem (Markdown + YAML) |
| Desktop | Electron (via vite-plugin-electron) |
| Testing | Vitest + Playwright (e2e) |






