Skip to content

leporel/education-app

Repository files navigation

Education — личное пространство обучения

Screenshot

Универсальный воркспейс для самостоятельного обучения разным доменным областям (языки, естественные науки, программирование, и т.д.) в тандеме с Claude.

Контент — plain markdown. Прогресс и SRS (система интервальных повторений) — в .state/progress.sqlite, управляется локальным UI в .app/.

Как устроено

CLAUDE.md        — универсальные правила работы для Claude
README.md        — этот файл
.templates/      — шаблоны доменов, модулей и сниппетов (card/drill/frontmatter)
.state/          — прогресс и SRS (SQLite, управляется UI; руками не трогать)
.app/            — локальный UI (Bun + Vue 3), см. .app/README.md
domains/         — доменные области обучения
  <domain>/
    CLAUDE.md    — инструкции для этого домена
    memory.md    — что выучено, слабости, рабочие методы
    roadmap.md   — план обучения
    misc/        — произвольные справочные файлы (pdf, картинки, аудио)
    notes/       — пользовательские заметки (управляются UI)
    modules/NN-*/— модули: index / theory / cards / drills / lessons

Подробности формата (frontmatter, card/drill блоки, правила именования) — в CLAUDE.md.

Как начать новый домен

  1. Скопировать .templates/domain/ в domains/<название>/.
  2. Заполнить CLAUDE.md домена (цель, уровень, методология, стиль).
  3. Набросать roadmap.md, инициализировать memory.md.
  4. Создать первый модуль из .templates/domain/modules/00-module-template/.

Как начать сессию с Claude

В новом чате сказать, например: «Занимаемся japanese, модуль 01-hiragana, продолжаем с того места». Claude сам прочитает CLAUDE.md, memory.md, roadmap.md домена и продолжит с текущей точки.

Для простых вопросов («как склоняется X?») можно спрашивать напрямую — сессионный протокол не обязателен.

Пример

См. domains/_example-japanese/ — минимальный заполненный домен с одним модулем. Домены с префиксом _ игнорируются обычным learner-флоу.

Локальный UI (.app/)

MVP на Bun + Vite + Vue 3 + Naive UI. Поднимается одной командой:

cd .app
bun install
bun run dev

SPA на http://localhost:5173, API на http://localhost:5174 (vite проксирует /api и /raw). Production-сборка: bun run build && bun run start.

Что умеет:

  • дерево доменов/модулей, рендер markdown с подсветкой кода;
  • режим flashcards и drill-упражнений (парсинг card / drill блоков);
  • SRS-повторения (SM-2) поверх bun:sqlite;
  • отметки прогресса и статусов по id из frontmatter;
  • просмотр misc/ через /raw/<path>, редактор заметок в notes/.

Детали стека и эндпойнтов — в .app/README.md.

Переменные окружения

Все пути и порт можно переопределить — полезно при запуске скомпилированного бинарника (bun run build:appeducation-app) из произвольной папки.

Переменная Что задаёт Значение по умолчанию
EDU_PORT порт HTTP-сервера 5174
EDU_CONTENT_ROOT корень доменов (domains/) dev: <repo>/domains; бинарь: <папка_с_exe>/domains
EDU_STATE_DIR папка для progress.sqlite dev: <repo>/.state; бинарь: <папка_с_exe>/.state
EDU_OPEN 1 — открыть браузер при старте dev: не открывает; бинарь: открывает всегда

Использование скомпилированного бинарника

SPA зашита внутрь education-app, но domains/ и .state/ — внешние. Минимальный комплект для получателя:

education/
├── education-app(.exe)     ← бинарник
├── domains/                ← контент (обязательно; может быть пустой)
└── .state/                 ← создастся сам при первом запуске

Либо указать альтернативные пути через EDU_CONTENT_ROOT / EDU_STATE_DIR.

About

Воркспейс для обучения с Claude Code: markdown-контент, `card`/`drill` блоки, SRS (SM-2) в SQLite и локальный UI на Bun + Vue 3.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors