«Добавило осознанности занятиям»: я похудел на 31 кг и теперь разрабатываю приложение для тренировок

Это история из Сообщества. Редакция задала вопросы, бережно отредактировала и оформила по стандартам Журнала
В прошлом году я похудел на 31 кг за девять месяцев — даже написал об этом статью в Т—Ж.
С тех пор понял, что нужно переключиться со снижения процента жира в теле на набор мышечной массы. Сделать это гораздо сложнее, чем просто похудеть. Например, за полгода мой вес увеличился на 3 кг, но как понять, что стало больше мышц, а не жира? Нужно проследить за результатами тренировок — к примеру, стал подтягиваться не девять раз, а одиннадцать.
Особенность моих тренировок в том, что я занимаюсь дома — с ограниченным набором оборудования и с еще более ограниченным количеством времени. В месяц я тратил на занятия около шести часов — получается, каждое шло от 40 до 45 минут.
Я решил сделать мобильное приложение, чтобы в удобном виде сохранять результаты тренировок. Хотелось, чтобы оно добавило ценности и осознанности моим занятиям, дополнительно меня мотивировало и помогло с планированием.
Разработка
Я фронтенд-разработчик. До этого уже писал пет-проекты — делал интернет-магазин и библиотеку компонентов. Чтобы разработка шла веселее, параллельно на ютуб-канале выпускал об этом видео и делал трансляции.
Считаю, что хорошее приложение должно решать конкретную проблему. Моя проблема — отчетность и отслеживание динамики тренировок. Готовые приложения мне не нравились: они были или платными, или с очень скудным набором функций. Поэтому я воспользовался своим профессиональным опытом. К тому же у меня наконец-то появилась возможность сделать что-то для и под себя.


Разработку приложения для тренировок я начал в конце 2024 года. Старался соблюдать баланс между скоростью и качеством — например, использовать расширяемую архитектуру, чтобы код можно было легко дополнять в будущем. Еще написал более 370 юнит-тестов, которые проверяют, что отдельные части приложения работают правильно.
Для фронтенда использовал Typescript, Vite, Vue, Tanstack Query, Vitest, для бэкенда — Typescript, Fastify, Mongoose, MongoDB, Swagger.
В целом особых сложностей в разработке не возникло. Прошлый пет-проект с интернет-магазином, на мой взгляд, был сложнее. Что уж говорить про основную работу.
Особенности приложения
Приложение получилось минималистичным, но полезным. Пользователь формирует занятие из доступных упражнений, выбирает вес и количество повторов. Можно добавлять сеты из разных упражнений или сразу несколько подходов одного. После этого пользователь либо сразу начинает занятие, либо добавляет его в календарь.
Во время занятия можно запускать и останавливать таймер — так в приложении появляется статистика, сколько времени в среднем занимает каждое упражнение. Благодаря функции можно видеть примерную длительность будущих тренировок еще при планировании: добавляешь пару упражнений, а их среднее время суммируется в длительность занятия.

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




Итоги и планы
Приложение я создавал под себя, но всегда рад конструктивной критике и пользовательским пожеланиям. Оно бесплатное, с открытым кодом и недавно появилось в RuStore. После изучения отзывов я локализовал приложение на английский язык. Еще позволил добавлять собственные упражнения, а не только выбирать из стандартного перечня.
Сейчас функции приложения покрывают большинство моих потребностей, но планы улучшения у меня амбициозные. Хочу добавить корректировку веса, использованного в подходе, редактор занятия в процессе его прохождения, офлайн-режим и функции тренера, чтобы была возможность планировать занятия подопечных.
Меня приложение во всем устраивает. Я вижу, сколько времени уходит на тренировки. Могу заранее понять, сколько продлится отдельное занятие. Самое полезное для меня — графики и таблица со статистикой для отслеживания прогресса и возможность планирования.