3.6 KiB
Backlog
1. Популярность инструментов — оценка: S
Поле popularity (число) в записи реестра; проставить всем текущим инструментам значения вручную (crop/resize/rescale выше остальных).
- Сортировка выдачи поиска и каталога: сначала популярные среди равного скоринга.
- Опционально: блок «Популярные» под героем поиска на главной.
2. Иконки инструментов — оценка: M
У каждой записи поле icon; отображается в результатах поиска, каталоге /list-tools, легендах шагов цепочки.
- Источник иконок: готовый открытый набор (Lucide, MIT) — подобрать по смыслу для всех инструментов; недостающие — нейтральная заглушка.
- Рендер одним SVG-спрайтом, без отдельных файлов на иконку.
- Кропотливая часть — подбор 50 осмысленных иконок, техника тривиальна.
3. Карточки результатов поиска — оценка: S
Заменить строки выдачи на карточки: иконка слева, название и описание справа; сетка в одну-две колонки в зависимости от размера героя.
- Зависимость: лучше делать после №1 (иконка), но можно раньше с плейсхолдером.
- Сохранить клавиатурную навигацию ↑↓ Enter Esc и подсветку активной карточки.
4. Несколько языков — оценка: L, разбита на подзадачи
4a. Инфраструктура i18n — M
Модуль словарей (locales/ru.ts, locales/en.ts), функция перевода с фолбэком на базовый язык, состояние активной локали (localStorage), переключатель в шапке, обновление <html lang>.
4b. Перевод каркаса интерфейса — S/M
Шапка, кнопки, подписи полей и состояний («Результат появится здесь», тексты ошибок исполнителя), главная-герой, страница каталога.
4c. Перевод контента реестра — L по объёму, механическая
Вынести title/description инструментов и label/options параметров в словари локалей с фолбэком. Объём: ~51 инструмент плюс параметры — основной трудозатратный кусок волны.
4d. Поиск по любому языку — M
Матчинг запроса против названий/описаний во всех поддерживаемых локалях сразу (не только активной); нормализация: нижний регистр, ё→е, снятие диакритики (NFD). Скоринг существующий сохраняется, лучшая локаль даёт балл.
Транслитерация ru↔en наизусть — не входит, отдельно при необходимости.