우리말

История изменений

Как росла платформа для изучения корейского: от первой версии на 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 КБ.
  • Добавлены значок вкладки и подтверждение для Яндекса.