JapaneseApp
Моё личное iOS-приложение для японского с нуля: интервальные повторения, письмо каны, спокойный интерфейс в стиле туши и бумаги и LLM, которая разбирает мою неделю и подстраивает настройки.
Закрытый код
git clone japanese-appДоступ запрещён: репозиторий приватный.Попросите у меня демоЗачем
Я учу японский без преподавателя, и мне нужен был один инструмент, который планирует день, назначает повторения и говорит, когда хватит. Заодно это витрина моей работы с интерфейсами.
Как это работает
Каждый день приложение предлагает план на 15–25 минут: сначала кана, потом уроки слов с грамматикой N5 и N4, повторения по FSRS-6 и письмо от обводки до записи по памяти. Раз в неделю LLM читает мой журнал занятий и присылает изменения настроек, которые приложение может откатить.
Что сделал я
Владелец продукта и дизайнер: методика обучения, интерфейс в стиле бумаги васи и туши в светлой и тёмной темах, архитектура. Код писали AI-агенты в процессе, который я выстроил: письменные контракты, замороженные тесты и агент-ревьюер на каждую задачу.
Статус
Рабочий MVP, по которому я занимаюсь сам. Приложение не распространяется, потому что словари и аудио лицензированы для личного использования, так что на странице только экраны, без кода.
- Роль
- Владелец: методика обучения, дизайн интерфейса, архитектура
- Период
- 2026
- Статус
- В разработке
- Стек
- Flutter (iOS), Dart, drift, SQLite, fsrs (пакет Dart), Python 3.12, UniDic, golden-тесты, мультиагентная AI-разработка
Главное
- План на 15–25 минут в день: сначала кана, потом 241 урок слов с грамматикой N5 и N4
- Повторения по FSRS-6 на карточках четырёх типов: узнать, услышать, вспомнить каной, вставить пропуск
- Письмо от обводки к письму от руки и по памяти, с порядком черт и подсказками
- Словарная карточка каждого слова: чтение, ударение, аудио, разбор иероглифа, мнемоника на русском
- Учитель здесь LLM: разбирает недельный журнал и присылает изменения настроек, которые можно откатить
- Дизайн в стиле бумаги васи и туши, светлая и тёмная темы, полностью офлайн
Переверните карточку, чтобы проверить себя. Дальше FSRS-6 в приложении решает, когда показать её снова.


«Сегодня»: план дня одним взглядом, повторения, новые слова и сколько времени это займёт.


Урок начинается с новых знаков на карточке с каллиграфией: как выглядят, как звучат, первые слова с ними.


Письмо: сначала обводите каждую черту по порядку, потом пишете по бледному контуру, потом по памяти.


Поиск по словарю понимает кану, кандзи, русский и английский и показывает чтение и уровень JLPT у каждого слова.


Прогресс: бонсай растёт вместе с выученными словами, а сетка показывает, какую кану вы уже прошли.
1 / 5 «Сегодня»: план дня одним взглядом, повторения, новые слова и сколько времени это займёт.
Что это
Я учу японский без преподавателя и сделал приложение, которого мне для этого не хватало. Оно рассчитано на 15–25 минут в день и само говорит, когда на сегодня хватит. Сначала хирагана и катакана: 31 урок, и каждый знак сразу появляется внутри настоящего слова. Потом 241 урок слов в порядке колоды Kaishi 1.5k со вставками грамматики N5 и N4 и примерами, где новое добавляется по одному шагу за раз.
Повторения планирует FSRS-6, алгоритм интервального повторения, на карточках четырёх типов: узнать слово, понять на слух, вспомнить и набрать каной, вставить пропуск в предложение. Письмо идёт по ступеням: от обводки к письму от руки и по памяти. Поиск открывает полную карточку слова: чтение, тональное ударение, аудио, разбор иероглифа и мнемоника на русском.
Роль учителя играет LLM. Раз в неделю приложение выгружает ZIP с журналом занятий, голосовыми заметками и вечерними check-in. Модель читает его и присылает пакет изменений настроек, который приложение применяет и умеет откатить.
Что я сделал
Систему обучения под то, как учусь я сам, и заодно витрину моей работы с интерфейсами. Стиль построен на бумаге васи и туши: светлая и тёмная темы, живой пруд с карпами и небо на экране «Сегодня», которое меняется со временем суток. Нажатия срабатывают в момент касания, с пружинной анимацией и тактильным откликом. Свайп назад как в iOS работает везде, настройка уменьшения движения учитывается, а вёрстка не ломается при крупном системном шрифте (Dynamic Type).


«Сегодня»: план дня одним взглядом, повторения, новые слова и сколько времени это займёт.


Урок начинается с новых знаков на карточке с каллиграфией: как выглядят, как звучат, первые слова с ними.


Письмо: сначала обводите каждую черту по порядку, потом пишете по бледному контуру, потом по памяти.


Поиск по словарю понимает кану, кандзи, русский и английский и показывает чтение и уровень JLPT у каждого слова.


Прогресс: бонсай растёт вместе с выученными словами, а сетка показывает, какую кану вы уже прошли.
1 / 5 «Сегодня»: план дня одним взглядом, повторения, новые слова и сколько времени это займёт.
Технические решения
- Полностью офлайн. Flutter-приложение для iOS с двумя базами SQLite через drift: контент только для чтения и прогресс пользователя. Обновление контента никогда не трогает мою историю.
- Расписание. Повторения считает открытый Dart-пакет
fsrs. Вокруг него я продумал регулятор нагрузки, режим восстановления после перерыва и мягкий лимит сессии, чтобы пропущенная неделя не превращалась в стену повторений. - Пайплайн контента. Python 3.12 собирает базу из JMdict, KANJIDIC2, колоды Kaishi 1.5k, Dictionary of Japanese Grammar и UniDic, добавляет аудио и переводы на русский.
- LLM в цикле. У недельной выгрузки и пакета изменений строгий формат: модель может поменять только то, что разрешает приложение, и любое изменение откатывается.
- Мультиагентная разработка. Сначала письменные контракты и замороженные тесты, затем на каждую задачу агент-исполнитель и агент-проверяющий. Скрипт проверки падает, если меняется замороженный файл.
- Golden-тесты. Каждый ключевой экран рендерится в обеих темах и сравнивается с эталоном. Экраны на этой странице отрисованы тем же способом, на демо-данных.
Результат
Рабочий MVP, по которому я сам учусь. Приложение закрытое и не распространяется: словарные источники и аудио лицензированы только для личного использования. Поэтому здесь есть экраны, но нет кода.
Моя роль
Владелец продукта и дизайнер: методика обучения, интерфейс и архитектура. Код писали AI-агенты в процессе, который вёл я: планку задавали контракты и замороженные тесты, а каждую задачу проверял агент-ревьюер.