История изменений
Как росла платформа для изучения корейского: от первой версии на Vue до поиска, защиты, заметок, игры и автоматических проверок. Что и когда добавляли.
Видео-обзор платформы на главной
· На главной рядом со строкой «личное пространство» появилась ссылка «посмотреть видео-демонстрацию».
- Видео открывается в окне поверх страницы и загружается, только когда окно открыто.
- В ролике все основные страницы: кабинет и его вкладки, «Сегодня», игра, словарь, грамматика, справочник, тренажёры.
Место для картинок: гигабайт и в настройках
· Квота картинок выросла с 500 МБ до 1 ГБ, а полоска «занято» переехала в «Настройки».
- Блок «Место для картинок» во вкладке «Прогресс и копии»: занято и сколько всего.
- В счёт входят все файлы: галерея, вложения заметок и обложка кабинета, поэтому занятое место может быть больше нуля при пустой галерее.
Уровень на баннере и «Мой путь» в профиле
· Значок уровня переехал в угол баннера кабинета и меняет цвет с темой, в профиле появились итоги за всё время.
- Баннер кабинета стал выше (400 px), уровень лежит в правом нижнем углу.
- Блок «Мой путь» в «Настройках»: дни в пути, выученные слова, ответы, время занятий, уровень и лучшая серия.
Плавное меню и вкладки без дёрганья
· Экран больше не прыгает при переключении вкладок настроек и при скрытии меню.
- Скрытие меню плавное, страница при этом растягивается на всю ширину; ширина меню 300 px.
- Вкладки «Настроек» не перерисовываются заново и не подгружают блоки при каждом нажатии.
Архив недель с картинками
· На вкладке «Неделя» в кабинете появился список прошлых недель, у каждой есть своя картинка-отчёт.
- По каждой неделе (пн–вс): ответы, процент верных, дни с занятиями, выученные слова, время.
- Кнопка «Картинка» делает карточку недели и сохраняет её в загрузки (на телефоне открывает меню «Поделиться»).
Секундомер на заданиях
· В сериях заданий видно, сколько секунд идёт текущее задание, а в итоге время всей серии.
- Работает в «5 минут», «Мои ошибки», частицах, переводе предложений и других сериях.
- В итоге: общее время, среднее на задание и какое задание заняло дольше всего.
Платформу можно установить как приложение
· Сайт ставится на MacBook и телефон своим окном и значком и открывается без сети.
- На главной появилась ссылка «скачать приложение», в «Настройках» блок «Приложение» с подсказкой для Chrome, Safari и iPhone.
- Уже открытые страницы работают без сети, а ответы досылаются на сервер, когда сеть вернётся.
Настройки по вкладкам
· Нижняя часть «Настроек» разложена на три вкладки, страница стала короче.
- «Прогресс и копии»: где хранится прогресс и резервные копии.
- «Защита и доступ»: код из письма и гостевые токены.
- «Визитка»: публичная страница /me. Выбранная вкладка помнится после обновления.
Чек-лист на день
· На странице «Сегодня» появилась вкладка «Чек-лист»: пять целей на день со ссылками на нужные задания.
- Набор целей каждый день новый: «10 раз пройти режим в игре», «реши 15 заданий на частицы», «сделай 20 предложений» и другие.
- Ответы за день считаются сами, пункты для тетради отмечаются галочкой.
- Чек-лист можно сохранить, он лежит во вкладке «История» рядом с наборами заданий.
Настроение занятий
· После серии заданий можно отметить, как прошло: легко, нормально или тяжело.
- В «Обзоре» кабинета видно последние 14 дней цветом и день недели, в который обычно тяжелее всего. Отметки хранятся на сервере и входят в копию.
Напоминание заниматься
· В выбранное время приходит письмо, если за день ещё не было ни одного ответа.
- Включается в «Настройках», там же время и кнопка «Отправить пробное».
- Если уже позанимался, письма не будет. В письме сказано, сколько дней идёт серия, и есть кнопка «Пять минут».
Слово в разных формах
· Таблица глаголов и прилагательных с тремя формами.
- Настоящее, прошедшее и отрицание с «안» у всех глаголов и прилагательных из тренажёров, с поиском и ссылками на правила. Открывается из «Слов».
Собери слово по слогам
· Новый тренажёр: по переводу собираешь корейское слово из плиток-слогов.
- Среди плиток есть лишние слоги; сначала идут слова, в которых были ошибки. Страница доступна из «Тренажёров».
Переведи предложение
· Целое предложение из словаря: на русский, на корейский или вперемешку.
- Четыре варианта, неверные подобраны похожей длины, чтобы ответ не угадывался по размеру. Страница доступна из «Тренажёров».
Похожие, но разные
· Тренажёр на слова, которые легко перепутать.
- Неправильные варианты здесь похожи на верное слово (та же тема, общие слоги или слова перевода), а сначала идут слова, в которых были ошибки. Страница доступна из «Тренажёров».
Тренажёр частиц и окончаний
· Вставь нужную форму в предложение: для каждого правила свой набор.
- Страница «Частицы и окончания»: выбери правило (은/는, 이/가, 을/를, 이에요/예요…) или «вперемешку»; задания собираются из примеров карточек грамматики, при ошибке есть разбор и ссылка на правило. Доступна из «Тренажёров».
Разбор ошибок
· После неверного ответа под заданием короткое объяснение.
- Видно, что выбрано и как верно, почему так, а для заданий на правило и форму есть кнопка «Открыть правило» с нужной карточкой грамматики. Работает в «Сегодня», «5 минут» и «Моих ошибках».
Личные рекорды
· В «Обзоре» кабинета четыре рекорда: лучший день, лучшая неделя, самая длинная серия и самое долгое занятие.
- Когда сегодняшний день сравнялся с лучшим или побил его, рядом с заголовком появляется поздравление.
Календарь тепла
· В «Обзоре» кабинета клетки по дням за полгода: чем больше верных ответов, тем темнее.
- Подписи месяцев, подсказка по каждому дню и счётчик дней с занятиями; тёмнее всего день, когда выполнена цель.
Закладки: «Важное»
· Звёздочка у слова и у правила, а все отмеченные собраны на отдельной странице.
- В словаре ☆ в каждой строке, в карточке правила ☆ в шапке; закладки хранятся на сервере и не пропадают при смене устройства.
- Страница «Важное»: отмеченные слова и правила одним списком, карточка правила открывается по нажатию.
Мои ошибки
· Отдельная страница со словами, в которых ошибаешься чаще всего.
- Список по числу ошибок: верно и неверно, доля ошибок, пометка, если слово уже выучено.
- Кнопка «Потренировать эти слова» запускает короткую серию только по ним; ссылка есть в кабинете рядом со слабыми словами.
Режим «5 минут»
· Одна кнопка на главной: десять заданий вперемешку без выбора.
- В набор попадают слова, которые пора повторить, задания на правило и новые слова.
- Отвечать можно клавишами 1–4, дальше Enter; в конце видно, что не получилось.
Тёмная тема и режим «только задание»
· Вечером светлый фон больше не режет глаза, а меню можно спрятать.
- Кнопка «Тёмная / Светлая» в боковом меню и выбор в «Настройках»: светлая, тёмная или «как в системе».
- Тёмные цвета есть на всех страницах: главная, раздел, кабинет, игра, окна и плашки. Выбор помнится на устройстве.
- Кнопка «Спрятать меню» (и клавиша F): остаётся только задание на весь экран, вернуть меню можно кнопкой «Меню».
Мелочи и забота о копиях
· Много небольших улучшений: понятнее ошибки, удобнее поиск и главная, надёжнее копии.
- Ошибки связи теперь понятны: «нет интернета», «сервер недоступен», «сервер не отвечает».
- Клавиша «/» открывает окно поиска с любой страницы (Esc закрывает любое окно).
- У заметок и картинок счётчик символов; когда лимит достигнут, рамка краснеет. Пустые списки подсказывают, что делать.
- На главной карточка «Слово дня» переворачивается по нажатию, а если пора повторять слова, появляется ссылка «Пора повторить N слов».
- Если полный архив не приходил больше 8 дней, вверху кабинета появляется жёлтая подсказка.
- Если ночная копия не удалась или не делалась больше 36 часов, сервер присылает письмо; ночной таймер ставится одной командой.
- В словаре кнопка «Похожие слова»: слова из той же темы, с общими слогами или словами в переводе.
- На телефоне больше ничего не вылезает за край: широкая таблица «Шпаргалки» листается внутри себя, график и ссылки в игре подстраиваются; кнопки в кабинете одного размера.
- В «О платформе» новый слайд «Настройки и защита».
Полный архив на почту
· Все данные платформы можно упаковать одной кнопкой и отправить на почту.
- В «Настройках» кнопка «Сделать архив и отправить»: база, картинки, файлы календаря и настройки сжимаются и шифруются вашим паролем.
- Видно, на каком этапе процесс (снимок базы, сжатие, шифрование, почта), по окончании приходит плашка.
- Письмо с копией оформлено в стиле сайта: вложение, шаги «как открыть» с готовыми командами и напоминание про пароль.
- Архив уходит письмом на почту (если большой, то частями); раз в неделю то же делается само.
- Рядом ночная копия на самом сервере (scripts/backup.sh) с проверкой целостности базы и предупреждением, если копия давно не делалась.
Страница «такого нет»
· Неизвестный адрес больше не уводит на главную молча.
- Показывается страница 404 с поиском по платформе и ссылками на основные разделы.
- Такие адреса закрыты от поисковиков (noindex).
Красивое письмо с кодом
· Письмо с кодом входа оформлено в стиле платформы.
- Повторно отправить код можно через 30 секунд, на экране идёт обратный отсчёт.
- Код крупно в четырёх ячейках, понятный текст и предупреждение, есть и текстовая версия письма.
- Письмо помечено как служебное (автоматическое), чтобы почтовые программы не принимали его за рассылку.
Календарь со шторкой
· Календарь на вкладке «Неделя» стал компактнее, а записи дня открываются справа.
- Клик по дню открывает шторку справа (как «Что здесь есть» на главной): записи этого дня, новая запись, файлы.
- При создании записи ставится галочка «Материал от репетитора»; без неё запись личная. В календаре точки двух цветов, у записи плашка вида.
- Календарь стоит слева, статистика за 7 дней справа, в одной строке.
- Файлы можно перетащить прямо в шторку: они прикрепятся к записи, а не вставятся в текст.
График в «Днях занятий»
· Блок «Графики» заменён одним графиком рядом с календарём занятий.
- В кабинете справа от «Дней занятий» стоит график «Ответы за 30 дней», остальные графики убраны.
- Карточка «Поделиться» на компьютере сохраняется файлом, меню «Поделиться» осталось для телефона.
Защита кодом из письма
· После токена можно требовать ещё и код из 4 цифр, который приходит на почту.
- Включается в «Настройках»: адрес подтверждается кодом, поэтому опечатка в адресе не закроет вход.
- Код одноразовый, живёт 10 минут, после пяти ошибок сгорает; после входа устройство запоминается на 30 дней.
- Есть кнопка «Выйти на всех устройствах» и аварийный выключатель на сервере на случай, если письма не приходят.
Журналы сервера и скорость
· Журналы Node и Caddy читаются прямо в кабинете, а сайт грузится аккуратнее.
- Вкладка «Журналы» (только владельцу): журнал сервера и журнал доступа Caddy, фильтр по уровню, поиск, автообновление.
- Раздел платформы подгружается только при входе в него, библиотеки (Vue, GSAP) лежат в отдельных файлах и не перекачиваются после обновлений сайта.
- Страница больше не мигает «голым» текстом перед загрузкой приложения.
Красивые графики
· В кабинете появился блок «Графики» с плавной анимацией и подсказками.
- Ответы за 30 дней (всего и верные), время занятий за 14 дней, радар «где сильнее» по темам словаря, прогноз повторений на неделю.
- У каждого графика подсказка при наведении и таблица с теми же числами под спойлером.
Визитка /me и карточки для соцсетей
· Можно показать свой путь одной ссылкой и поделиться красивой карточкой.
- Страница /me: счётчик дней, серия, выученные слова, уровень и обложка. По умолчанию закрыта, включается и выключается в настройках.
- Для ссылки на /me рисуется своя картинка 1200×630; остальные картинки по-прежнему закрыты токеном, открыта только разрешённая обложка.
- Кнопка «Поделиться» у слова, правила и достижения: готовая карточка 1200×630 в цветах платформы.
«Сегодня» стало больше
· На странице заданий появились игры, больше упражнений и история сохранённых наборов.
- Задание на правило дня: вставь нужную форму или выбери перевод предложения (из примеров карточки).
- Кнопка «Закрыть слова»: три игры подряд (найди пары, выбери перевод, собери предложение).
- Заданий стало 15; в конце кнопка «Проверить и сохранить».
- Рядом с «Новым набором» вкладка «История»: все сохранённые наборы с ответами и ошибками.
Календарь с записями и файлами
· На вкладке «Неделя» появился календарь: по клику на дату создаётся запись, к ней прикрепляются файлы.
- Запись: название, время, текст, теги; например, урок по субботам в 19:30 и домашка.
- К записи можно прикрепить PDF, Word (.doc, .docx) и картинки: они хранятся на сервере постоянно и открываются из календаря.
- Дни с записями отмечены точкой, дни с занятиями закрашены.
- В «Настройках» обложка кабинета стоит рядом с именем и картинкой в две колонки.
Теги в заметках и картинках
· Заметки и картинки можно помечать тегами и находить по ним.
- Тег выбирается из уже существующих или создаётся новый, показывается как #test-tag.
- Один набор тегов на заметки и картинки, в обеих вкладках кабинета есть фильтр по тегу.
Выпуск без ручной возни
· Проверки и обновление сервера стали автоматическими, а проект получил собственные пакеты.
- Автопроверки на GitHub: на каждое изменение сами запускаются проверка типов, сборка, все тесты и поиск уязвимостей (на двух версиях Node).
- Dependabot раз в неделю сам предлагает обновления пакетов отдельными заявками.
- Обновление сервера одной командой: скрипт сам получает код, ставит пакеты, собирает, перезапускает службу и проверяет, что сервер отвечает; при ошибке сам откатывается.
- Скрипт сам возвращает файл блокировки, который переписал старый npm на сервере.
- Папка с пакетами отвязана от соседнего проекта: теперь пакеты можно ставить свободно.
Идеи, README и документация
· Описали платформу для людей и собрали план развития.
- Папка идей: 160 идей по девяти темам с размером и ценностью, список того, что уже есть (чтобы не было дублей), дорожная карта по волнам и правила.
- Главный README начинается с описания платформы и галереи из скриншотов всех страниц, как на «О платформе».
- Документация обновлена целиком: правила кода, устройство сервера, защита, SEO, выкладка на хостинг, журнал изменений.
- Страница «История изменений»: вся эта лента, составленная по истории git, со ссылкой в шапке главной.
- Выкладка на хостинг разобрана по шагам: исправлен запуск службы, настроен Caddy, проверены заголовки и готовые страницы для поисковиков.
Новый дизайн, поиск, защита и SEO
· Сайт стал пастельным и красивым, получил общий поиск и серьёзную защиту.
- Новый дизайн по макетам: розово-голубой градиент, стеклянные карточки, плавающее меню, новая главная и главная раздела.
- Окно поиска по всей платформе (Ctrl/⌘ + K или кнопка справа вверху): слова, правила, фразы, буквы, примеры; результаты прямо в окне, без переходов.
- Страница «О платформе»: слайдер со скриншотами и описанием каждой страницы.
- Защита сервера: блокировка подбора токена, ограничение частоты запросов, заголовки безопасности, таймауты, защита от файлов-«бомб».
- Повторный ввод токена для опасных действий: сброс прогресса, загрузка копии, создание гостевого доступа; ошибка показывается прямо в окне.
- Таймауты на всех запросах сайта, плашки-уведомления справа вверху, свои окна подтверждения вместо встроенных.
- SEO: свои заголовки и описания у страниц, карта сайта, robots.txt, превью для соцсетей, подтверждение Яндекса и готовые страницы с содержимым для поисковиков.
- Фраза дня меняется при каждом обновлении страницы, значок вкладки: розовая ✳, название платформы 우리말.
- После обновления страницы остаёмся там же: на странице, вкладке и месте прокрутки.
Кабинет: заметки с картинками, время занятий, обложка
· Личный кабинет стал местом, где можно держать свои материалы.
- Заметки с картинками (до десяти на заметку), клик открывает окно с полным текстом; в карточке видны первые сто символов.
- Раздел «Картинки»: поиск по названию и описанию, фильтр по датам; картинки заметок и обложки не смешиваются с ним.
- Таймер занятий: включается кнопкой, время записывается в базу, в кабинете видно за сегодня, неделю и всё время; напоминание про таймер.
- Обложка кабинета и профиль только со своей картинкой.
- Кнопка «Готово» в повторении и остальные кнопки оформлены в стиле платформы; в строке тренажёров убраны смайлики.
Сервер на NestJS и SQLite
· Файл с данными заменила настоящая база, а сервер стал надёжнее и умнее.
- Сервер переписан на NestJS с базой SQLite: вход по токену, гостевые токены, заметки, прогресс.
- В базе лежат все ответы, статистика слов, дни занятий, профиль и настройки; каждый день делается копия базы.
- Сайт отправляет действия на сервер очередью, а без сети копит их и отправляет позже.
- Раздел «Картинки» (файлы, миниатюры, проверка по содержимому) и вкладка «База» для просмотра таблиц (только чтение).
- Тесты на настоящем сервере с временной базой, проверка, что правила сайта и сервера считают прогресс одинаково.
Заметки, кнопка «Играть» и «Обновить вопрос»
· Появились заметки и несколько удобных кнопок.
- Заметки в кабинете: название и описание, поиск, синхронизация с сервером.
- Кнопка «Играть» в кабинете и кнопка «Обновить вопрос» в каждом режиме игры.
- Случайное правило грамматики на главной после каждого обновления.
- Убраны японские знаки и шрифт; стрелки у ссылок стали простыми и ровными.
- Журнал изменений и записанные решения владельца в документации.
Гостевой доступ и тесты
· Платформу можно показать другому человеку, ничего ему не открывая насовсем.
- Временные гостевые токены (1 час, 3 часа, 1 день, 7 дней), которые ничего не сохраняют; вход по ссылке и отзыв из кабинета.
- Гостевой режим на сайте: прогресс не пишется, данные владельца не затрагиваются.
- Первые автоматические тесты: прогресс, повторение, разбор предложений, гостевой режим.
- Документация разбита по темам, добавлено описание тестов и гостевого доступа.
Сад воспоминаний, поиск и справочник
· Появились сад, коллекция карточек и вкладки справочника.
- Сад воспоминаний: каждое слово растёт от семечка до цветка и увядает, если его не повторять; коллекция карточек с редкостью по числу ошибок.
- Главная раздела с поиском по всему сайту и вкладки справочника (шпаргалка, разговорник, хангыль, алфавит, чтение, примеры, числа).
- Подсветка найденного на страницах справочника, правило открывается прямо по ссылке.
- Новые режимы игры, диалоги и сообщение о цветении слова.
- Шторка «Что здесь есть» со списком игр и страниц.
Отдельный сайт korean и «небесная» тема
· Корейский раздел стал самостоятельным проектом.
- Проект выделен из личного сайта в отдельный репозиторий и переименован в korean.
- Новая главная с небом и ссылками на разделы, счётчик дней и контакт в Telegram.
- Светлая «небесная» тема для всех учебных страниц, игры и экрана токена.
Кабинет и вход по токену
· Личное стало личным: закрытые разделы и свой кабинет.
- Личный кабинет: профиль, повторение слов по интервалам, итоги недели, история ответов и настройки (заменил страницу «Прогресс»).
- Задания «Сегодня», тренажёры, повторение, игра и кабинет открываются только после ввода токена; в меню видны замки.
- Игра берёт цель дня и группы слов из настроек кабинета.
- Приветствие на главной и подсказка про вход.
Прогресс и первый сервер
· Платформа начала запоминать успехи.
- Общий прогресс: очки, 40 уровней, серия дней, выученные слова (после трёх верных ответов подряд), достижения.
- Ответы из игры, тренажёров и «Сегодня» записываются в общий прогресс; значок уровня в меню.
- Первый сервер прогресса: один файл с ежедневными копиями, вход по токену, очередь записи.
- Токен читается из файла server/.env, добавлена пошаговая инструкция запуска.
- Крупные числа без путаницы между 1 и I; написан CLAUDE.md с контекстом проекта.
Тренажёры, разбор предложений и игра
· Появилась практика: пары, перевод, формы и игровые режимы.
- Тренажёры: «найди пару» и «напиши перевод» по темам, глаголам, прилагательным и вопросам, с повтором ошибок и печатью листа.
- Задания на настоящее и прошедшее время глаголов в «Сегодня».
- Разбор предложений: нажми на пример и увидишь слова, частицы, окончания и перевод.
- Игра «Хлебушек»: «найди верное», «напиши», выживание, подсказка 50/50, уровни, цель дня; генератор предложений «собери предложение» на трёх уровнях сложности.
- Игра на всю ширину экрана, обновлён README.
Корейский раздел переезжает в приложение
· Словарь, грамматика и справочники стали частью сайта.
- Словарь, грамматика, шпаргалки и повторение перенесены внутрь приложения вместо отдельных поддоменов.
- Игра «Хлебушек» стала страницей сайта и оформлена в его стиле.
- Страницы «Сегодня» (слова дня, правило дня, задания) и «Алфавит» (буквы, составные гласные, таблица слогов).
- Счётчик дней с 1 июня на главной, меню главной, шторка «Что здесь есть».
- Исправления: убраны повторяющиеся слова, неизвестные адреса ведут на главную, добавлены пропущенные слова.
Названия и главная страница
· Наведён порядок в именах файлов и заголовках.
- Переименованы файлы и обновлены заголовки страницы.
Начало: сайт на Vue 3
· Первая версия сайта переехала на современный стек.
- Сайт переписан на Vue 3 и Vite с хранилищем Pinia и контактной панелью.
- Шрифты размещены на своём сайте вместо Google Fonts, картинка сжата с 1,8 МБ до 139 КБ.
- Добавлены значок вкладки и подтверждение для Яндекса.