Год назад я опубликовал первую статью про разработку приложения календаря тренировок. Спустя 5 месяцев опубликовал рассказ о 10 обновлениях. Сейчас время финала истории - ещё 7 обновлений за 7 месяцев.

Сам регулярно пользуюсь приложением - оно добавляет мотивации заниматься спортом дальше, сохраняет график тренировок, следит за объемом выполненных упражнений. На текущий момент в приложении больше 150 зарегистрированных пользователей.

Времени на пет-проект уделял крайне мало, но основная функциональность была уже готова ранее. Сейчас на нём можно пробовать что-то новое - получается хороший полигон для испытаний.

Исходный код

Приложение в RuStore

Веб-версия

Frontend: Typescript, Vitest, Vite, Vue, Tanstack Query, Vue I18n, Tauri

Backend: Typescript, Vitest, Esbuild, Fastify, Mongoose, MongoDB, Swagger

Шаблоны занятий

Возможность сохранять наборы из упражнений в шаблоны. Из них можно формировать новые занятия. Можно создать шаблон 3 способами: в профиле, при формировании занятия, преобразовать в шаблон любое прошедшее занятие.

Шаблоны можно редактировать в любое время. Само занятие теперь тоже можно полностью редактировать даже в момент его прохождения. Например, можно удалить упражнения, изменить количество повторов и используемый вес.

Редактирование шаблона
Редактирование шаблона

Тёмная тема

В верхнее меню добавил переключатель тёмной темы. Сделал через добавление класса .dark к body. Лично я тренируюсь между завтраком и обедом или между обедом и ужином. Но это был запрос от пользователей, поэтому реализовал.

Тёмная тема
Тёмная тема

Рефакторинг и тесты бэкенда

Ещё в предыдущей статье я писал, что использовал qwen 3 coder 30b для доработки unit тестов на фронтенде. Но прошло 7 месяцев, появились такие модели, как qwen coder next 80b и qwen 3.5 122b, которые на 5070ti работают очень даже неплохо в вариантах q6 и q4, соответственно. Скорость генерации через llama.cpp внутри cline с полным 256кб контекстом выходит в 20-30 токенов в секунду.

Сами модели стали гораздо умнее. Если раньше qwen 3 coder выполнял маленькие задачи и часто генерировал ад, то более свежие и большие модели изменили моё отношение к локальному ИИ.

У меня бы ушли недели на тот рефакторинг бэкенда, который ИИ сделал за пару дней. Теперь архитектура стала более-менее приличная, около 300 юнит тестов покрывают основную функциональность бэкенда.

Подробная документация проекта сгенерирована deepwiki.

Оптимизация сборки

Раньше apk файл весил 10 мегабайт. С помощью оптимизаций tauri и билда на фронтенде получилось уменьшить размер до 7 мегабайт. RuStore на странице приложения показывает вообще 3.2 мегабайта.

В целом, скорость загрузки главного экрана достаточно сильно оптимизировал. Lighthouse показывает 100 баллов для desktop и 96 для mobile. Можно ещё сильнее оптимизировать, но тогда кода станет больше, он станет сложнее, придётся избавляться от разных фишек. Например, сейчас очень красиво работает переключение языка с русского на английский - мгновенно, без перезагрузки страницы.

Бэкенд теперь собирается в один файл. Не нужно при деплое писать npm i внутри ci/cd, нет папки node_modules. Esbuild строит продакшен билд бэкенда менее 0.1 секунды, файл 2.6 мб. Обновил Vite до 8 версии с rolldown: билд фронтенда идёт примерно 0.4 секунды.

Замена календаря

Раньше я использовал календарь vue-cal. Он был очень функциональный. Можно даже сказать, что слишком функциональный. Тяжело было его стилизовать, чтобы он был в общей стилистике сайта. Он тянул сотни лишних килобайт js и css.

С помощью ИИ написал календарь под свои нужды за пару десятков минут. Теперь весь календарь весит 5 килобайт. Он стал лучше выглядеть, надёжнее работать.

Компонент календаря
Компонент календаря

Простота

Понял, что нужно делать проект более простым и дружелюбным для пользователей. Сокращал и упрощал текст главной страницы, страницы помощи. Добавлял небольшие подсказки и комментарии.

Через обычную запись экрана на телефоне за 2 минуты прошёлся по основной функциональности приложения. Через CapCut на телефоне же добавил комментарии к видео. Добавил видео на страницу в RuStore, на странице помощи в приложении.

Иллюстрации упражнений

У меня есть таблица с готовыми упражнениями. Также каждый пользователь может добавить до 20 своих индивидуальных упражнений.

Я захотел добавить иллюстрации к упражнениям в едином стиле. С помощью ComfyUI решал эту задачу. Сначала через z-image-turbo сгенерировал 2 картинки: женщину и помещение с базовым оборудованием. Потом через flux2 klein 9b совмещал 2 картинки и генерировал упражнения. Создание картинок из текста шло 4 секунды, редактирование картинок 6 секунд. Это маленькие модели, они целиком влезают в 16гб видеопамяти.

Некоторые упражнения нормально генерировались со 2-3 раза. Сложнее всего было сделать подтягивание с обратным хватом. Очень тяжело идёт работа с ладонями - в итоге сотни попыток, куча разных промптов + небольшая помощь графического редактора.

Пример сгенерированной картинки
Пример сгенерированной картинки

Итог

В 2026 году похожее приложение с 1 запроса за час может сгенерировать платная флагманская модель ИИ, например Claude Opus 4.6. Естественно, дальше модели будут ещё умнее (новости про mythos чего стоят), рынок меняется, а будет меняться ещё сильнее, про пет-проекты я вообще молчу.

Мы живём в интересное время, когда серьёзный локальный ИИ стал доступен даже в рамках ПК с обычной бытовой видеокартой. В моём проекте ИИ является помощником, но будет всё больше приложений, где разработчик не понимает, как устроен код. Скорее всего, это будет считаться нормальным со временем.

Отрицать удобство, скорость и полезность ИИ сейчас странно. Это инструмент, которым теперь приятно пользоваться.