.учёба
DotLearn
Ускоренная подготовка к собеседованиям: сам выбираешь тему, а AI строит вокруг неё урок.
суть
Тему для урока формулируешь сам: произвольным текстовым запросом, хоть под конкретный вопрос с собеседования. После запроса начинается работа агента: lesson-forge проверяет тему на конфликты с каталогом и генерирует пакет, MDX-теорию и YAML-задачи, прошедшие автоматическую валидацию в браузерном рантайме. Всё это коммитится в репо, а не записывается в базу, поэтому тему можно форкнуть, расширить или исправить обычным pull request. Рядом с темами есть готовый банк из 368 вопросов с собеседований на 10 направлений, тоже с разбором «как отвечать», упражнениями и отдельным режимом флэшкарт.
Код выполняется в Web Worker, где при старте нейтрализуются 15 сетевых API: fetch, WebSocket, RTCPeerConnection, BroadcastChannel и другие. Написанный код не может ни отправить данные, ни открыть скрытый канал: это не политика, это архитектура. Прогресс, заметки, закладки и FSRS-карточки для интервального повторения живут в IndexedDB; бэкенд опционален, платформа ставится как PWA и работает офлайн. Из настроек: язык контента (RU/EN на лету), сложность упражнений, дневная цель, шрифт, размер текста и параметры Monaco-редактора.
Платформа изнутри
Семь шагов одной историей: от клонирования репозитория до экспорта прогресса. Иди стрелками ←/→ и смотри, как всё работает изнутри.
- 34 темы в каталоге
- 7 типов упражнений
- визуализации и интерактивные анимации
- local-first · без бэкенда
Запускаешь локально и просишь словами
Скачал репозиторий, поднял плеер одной командой и прямо в редакторе попросил ИИ-агента собрать тему. Без форм и кода: обычным языком.
ИИ собирает тему как набор файлов
Скилл lesson-forge сначала показывает план программы и ждёт твоё «ок», потом пишет манифест, теорию и задачи файл за файлом. Тема это код, а не строка в базе.
- Классы и объекты
- __init__ и self
- Атрибуты экземпляра
- Наследование
- Переопределение методов
- Инкапсуляция и свойства
- manifest.json структурный контракт темы
- theory/python-oop.ru.mdx теория-лонгрид с визуализацией
- exercises/python-oop.ru.yaml задачи с gold-решением
- flashcards/python-oop.ru.yaml карточки для повторения
Одна Zod-схема, единый стандарт
Кривую тему не пропустят: общий Zod-контракт валидирует и сайт, и сервер. Лишнее поле означает отказ. Затем gold-решения реально прогоняются в Pyodide.
Код исполняется прямо на странице
Python работает через Pyodide, SQL через sql.js. Оба в Web Worker, без сервера. Пишешь решение, жмёшь Run и сразу видишь результат: прогон тестов или таблицу.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return f"{self.name} makes a sound"
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof"
- Dog("Rex").speak() → Rex says Woof
- Animal("Rex").speak() → Rex makes a sound
- isinstance(Dog("Rex"), Animal) → True
Не стена текста, а живые схемы
В теорию встроены визуализации и интерактивные анимации: от наследования классов и хеш-таблиц до attention и градиентного спуска. И проверочные вопросы прямо по ходу чтения.
- наследование
- хеш-таблица
- attention
- градиентный спуск
- токенизация
Какие утверждения о наследовании классов в Python верны?
Без своего __init__ подкласс использует родительский; но если __init__ переопределён, super().__init__() нужно вызвать явно, иначе поля родителя не инициализируются. isinstance() смотрит на всю иерархию классов.
Прогресс копится, карточки возвращают
Стрик и тепловая карта активности живут в браузере (IndexedDB), без аккаунта. А флэшкарды по алгоритму FSRS сами решают, когда показать тему снова.
Весь прогресс в одном файле
Прогресс, карточки, заметки и закладки выгружаются одним JSON. Бэкап и перенос между устройствами без сервера и без аккаунта.
- прогресс и попытки
- повторения карточек (FSRS)
- заметки и закладки
- выделения и достижения
масштаб
размер и срок: что стоит за продуктом.
архитектура
AI-скилл офлайн пишет темы и открывает PR (Cursor/Claude)
- topics/ generates
Файловые темы: manifest, MDX-теория и YAML-задачи
- web · local-first glob
Отдельный банк вопросов для собеседований: статьи и упражнения
- web · local-first glob
Vite+React SPA, local-first; читает topics через glob
- lesson-engine
- IndexedDB progress
- NestJS API · opt opt
Общие Zod-схемы: валидируют темы и DTO заявок
- web · local-first
- NestJS API · opt
Прогресс, заметки и FSRS-повторения в браузере (Dexie)
Опционально: заявки тем, защищённая админка, поиск
Загрузчик тем, раннеры упражнений и CLI-валидатор
- sql.js + Pyodide Web Worker
Исполнение кода в Web Workers: SQL, Python, JS
стек
- Язык 2
- Фреймворк 5
- Данные 4
- Инфраструктура 4
- Клиент 4
- AI / ML 2
Язык
- TypeScript 5 (strict)
- Python (Pyodide)
Фреймворк
- React 18
- Vite 5
- NestJS 10 (DDD)
- TanStack Router
- Tailwind
Данные
- IndexedDB / Dexie
- Zod contracts
- MDX + Shiki
- Elasticsearch
Инфраструктура
- pnpm workspaces
- Turborepo
- Docker Compose
- GitHub Actions CI
Клиент
- sql.js (WASM)
- Pyodide (WASM)
- Monaco editor
- Web Workers
AI / ML
- lesson-forge skill
- ts-fsrs (SRS)
что умеет
ключевые возможности продукта прямо сейчас.
Темы как код
Каждая тема хранится файлами в репозитории: теория в MDX, упражнения в YAML. Это не строка в базе, поэтому правку можно предложить обычным pull request.
Zod-схема проверяет манифест темы по 70+ правилам, от уникальности до паритета RU/EN. Если провалена хотя бы одна проверка, правка не мёрджится.
AI-агент lesson-forge
AI сам пишет курс (теорию и упражнения), валидирует его и решает свои же задачи в песочнице, прежде чем открыть PR.
Если эталонное решение AI не проходит в той же песочнице, что увидит ученик, PR не откроется. CI отдельно проверяет сборку теории и паритет вариантов.
Код в браузере
sql.js и Pyodide в Web Workers плюс Monaco-редактор: Python и SQL реально исполняются в браузере, без сервера.
Воркер стартует с отключёнными fetch, WebSocket и ещё десятком сетевых API, поэтому написанное физически не может уйти наружу. У редактора есть автодополнение по SQL-схеме и две авторские темы.
Семь типов упражнений
От квиза до Python-функции: каждый тип проверяется автоматически, а самый неожиданный, git-challenge, моделирует настоящий Git прямо в браузере.
Собственный движок на ~600 строк реально выполняет commit, branch, merge, rebase, stash, без риска что-то сломать в настоящем репозитории.
Банк вопросов для собеседований
368 вопросов в 10 категориях, от структур данных до system design, с разбором «как отвечать», плюс режимы флэшкарт и экзамена.
Вырос из открытого набора вопросов по Python и полностью переписан: своя структура статей, 988 собственных упражнений и диаграмм.
Карточки, которые сами напоминают
FSRS-алгоритм считает, когда карточку пора повторить: чем увереннее отвечаешь, тем реже её видишь, а начал забывать, значит она вернётся раньше.
Тот же принцип, что в приложениях для изучения языков. Отдельно есть heatmap активности за 14 недель, как на GitHub.
Local-first
Открывается на localhost без бэкенда, аккаунтов и интернета, а ставится как PWA для полного офлайна.
Backend нужен только для приёма заявок и админки. Всё остальное (тренажёр, прогресс, карточки) живёт в браузере на IndexedDB.
Сообщество и свой сервер
Заявки на темы принимаются через PR или форму, модерация идёт в админке с TOTP-двухфакторкой, а self-hosting разворачивается в Docker.
Форма ограничена 5 заявками в минуту с адреса. Для входа нужны пароль и одноразовый код, а после 5 промахов подряд аккаунт блокируется на 5 минут.
хронология
как продукт рос от первой версии.
-
9 Jun 2026
Local-first плеер
6 типов упражнений, sql.js и Pyodide в Web Workers, Monaco, FSRS-повторения, TOTP-админка, i18n RU/EN.
-
11 Jun 2026
Взрыв контента
lesson-forge доказывает скорость: каталог растёт с 1 до 21 темы за два дня, 15 тем одним коммитом, плюс первые заготовки будущего банка вопросов для собеседований.
-
16 Jun 2026
Контент и flashcards
28 тем на RU+EN, седьмой тип упражнений git-challenge (детерминированный git-движок в браузере), flashcard-деки, lesson-forge + Zod-контракт, vitest-тесты, NestJS-бэкенд с заявками.
-
24 Jun 2026
Прод-хардинг
Sandbox-фиксы для Pyodide, CSP, pre-launch security hardening, CI gates (i18n, bundle, coverage, a11y).
-
30 Jun 2026
Финальная доводка
Каталог дорастает до 34 тем (django, DRF, python-testing, S3, Litestar), NestJS обновлён до мажорной 11 версии, ещё один проход харденинга закрывает уязвимости перед показом.