Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

503 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tutor

CI License: GPL-3.0 Latest Release

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.

Tutor library showing AI-generated books with custom covers

🎥 Watch the talk — "Books that Learn how your Learn"

📖 Read a blog post on how this works

How It Works

01 — Personalize

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.

Personalization interview screen

02 — Create

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.

New book creation dialog

03 — Read

~1,500-word chapters, 5–10 min each. Select any text to open an inline AI chat for deeper explanation.

Inline chat panel alongside chapter text

04 — Quiz

Post-chapter quizzes reinforce retention. A longer quiz at the end of the book synthesizes everything across all chapters.

Multiple choice quiz interface

05 — Adapt

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.

Feedback form for chapter content

Features

Adaptive Learning

  • 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

Reading & Listening

  • 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

Library

  • 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

Generation

  • 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

Open & Yours

  • 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

Learning profile and settings

Architecture

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/"]
Loading

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

Build Standalone DMG

pnpm install
pnpm electron:build

Development

pnpm 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 tests

Set your Claude, ChatGPT or Gemini API key in Settings (gear icon) on first launch.

Tech Stack

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)

License

GPL-3.0

About

AI-generated adaptive books that rewrite themselves as you learn. Hexagonal TypeScript with contract-tested ports, a feature-sliced React client, and an E2E suite that runs the real app on fake adapters.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages