История о том, как обычный вопрос про калории превратился в небольшое веб-приложение, которое я теперь использую каждый день.
С чего всё началось
Я бегун-любитель с PR 17:54 на пятёрке. После полугода без тренировок и набора 11 килограммов вернулся к бегу и обнаружил, что моё время упало до 20:10. Просчитал математику и понял: дело не в форме, а в весе. Нужно сбрасывать.
Логичный следующий шаг — навести порядок в питании. И тут я столкнулся с проблемой, которая, как оказалось, есть у большинства бегунов.
Почему обычные калькуляторы не работают для бегуна
Я открыл MyFitnessPal. Стандартный вопрос: пол, возраст, рост, вес, уровень активности, цель. Калькулятор выдал: 1800 ккал в день. Точка.
И вот это «точка» — главная проблема. Бегун-любитель тренируется неравномерно. В понедельник у меня лёгкая пробежка час. Во вторник МПК с интервалами 5×1000 — это +800 ккал расхода. В среду снова лёгкий час. В четверг порог на 4×8 минут — снова +800. В пятницу выходной. В субботу легкий бег. В воскресенье длинный 1:30 — это вообще +1000 ккал.
Расход в эти дни отличается между собой почти в два раза. А диетический совет — один и тот же.
1800 ккал в день отдыха — окей, нормальный дефицит, можно худеть.
1800 ккал в день МПК — катастрофа. Я выйду на интервалы с пустыми мышцами, развалю сессию, не восстановлюсь и буду чувствовать себя выжатым лимоном весь следующий день. И в долгосрочной перспективе — потеряю мышцы вместо жира.
Я попробовал MacroFactor — он адаптирует макросы под динамику веса, это лучше, но всё равно даёт одно число на день. Посмотрел Fuelin — специализированное приложение для эндуранс-атлетов, оно реально умное и периодизирует питание под нагрузку. Стоит около $60 в год, без бесплатной версии, и интерфейс заточен под англоязычного пользователя.
Я хотел простое: показывай мне, что и сколько съесть в день отдыха, что — в лёгкий день, что — в день качественной сессии. С учётом моего веса, целевого дефицита и привычки иногда пить изотоник на тренировке.
В выходные вечером я решил, что напишу это сам.
Что получилось
Один HTML-файл, который открывается в браузере и работает локально. Все данные хранятся в браузере, ничего никуда не отправляется.
Главная идея — три типа дня вместо одного.
Переключаешь день одной кнопкой:
- Отдых — расход меньше, дефицит больше, еды соответственно меньше
- Лёгкий бег — расход выше, дефицит тот же, еды чуть больше
- МПК/ПАНО — расход максимальный, дефицит в два раза меньше (для качества сессии), еды значительно больше
Для каждого дня приложение пересчитывает:
- Целевой калораж
- Распределение макросов (белок, углеводы, жиры — с граммами и долей)
- Конкретный план приёмов пищи с временем и порциями
- Карточку дефицита с прогнозом снижения веса на неделю и месяц
Простая, но важная фишка — буфер на подъедание.
Большинство людей недооценивают «фоновое» потребление калорий: чай с молоком, соусы, попробовал во время готовки, кусочек сыра из холодильника. Это легко 300 ккал в день, которые не попадают в подсчёты.
В моём приложении буфер заложен явно — план питания составлен с расчётом, что 300 ккал ты «подъешь между делом». Это убирает классический сценарий «ем строго по таблице, всё равно толстею».
Учёт изотоника на качественных тренировках.
Я пью изотоник на МПК — около 300 ккал за сессию. Это не еда, но это калории. В обычных калькуляторах их некуда положить. В моём — отдельная строка, и план еды автоматически уменьшается на это значение, чтобы общая математика сходилась.
Прогноз снижения веса.
Самая полезная фишка для мотивации. На основе профиля и типичной тренировочной недели (1 отдых + 4 лёгких + 2 качественных) приложение показывает:
- Средний дневной дефицит
- Прогноз на неделю
- Прогноз на месяц
- Прогноз на 3 месяца с конечным весом
И умные предупреждения: если темп слишком быстрый (>0.7 кг/нед) — красное предупреждение про потерю мышц и риск для здоровья. Если слишком медленный (<0.15 кг/нед) — серая подсказка про необходимость скорректировать дефицит.
Отслеживание веса с графиком.
Записываешь вес раз в несколько дней, приложение рисует sparkline-график динамики. Если вес растёт при цели «снижение» — карточка-подсказка автоматически меняет цвет и предупреждает, что реальное подъедание скорее всего больше заложенного буфера.
Как это выглядит технически
Один HTML-файл, около 44 килобайт. Чистый JavaScript без библиотек и фреймворков. Иконки встроены как inline SVG — не нужен интернет для отображения. Графики (кольцо макросов и линия веса) тоже SVG, отрисовываются на лету. Шрифт Inter подгружается с Google Fonts, но если интернета нет — браузер использует системный, и всё равно выглядит нормально.
Поддерживает темную тему автоматически — берёт из настроек системы.
Хранение данных через localStorage браузера. Перезагрузил страницу — твой профиль и история веса на месте.
Что я хочу довести до ума
Есть идеи, что добавить дальше:
- Недельный планировщик — все 7 дней на одной странице с суммарными цифрами
- Журнал съеденного — отмечать, что реально ел, и видеть отклонение от плана
- Автоматический список покупок на неделю
- Графики динамики калоража и веса за длительный период
- Учёт длинных воскресных пробежек как отдельного типа дня
- Учёт силовых и веловых сессий
Пока пользуюсь только сам — это рабочий прототип для решения конкретно моей задачи. Когда пойму, что инструмент достаточно отшлифован для широкой аудитории — сделаю публичную версию и расскажу здесь.
Что я понял из этого упражнения
Главный вывод — не технический, а скорее про подход.
Готовые приложения слишком универсальны. Они решают задачу «помочь любому человеку похудеть», а не «помочь бегуну в дефиците не сорвать качественную тренировку». Эти задачи кажутся похожими, но математика и логика у них разная.
И ещё один момент — иногда быстрее собрать инструмент под себя за вечер, чем месяц подстраивать жизнь под чужие инструменты. Особенно когда речь о приложении, которое решает простую математическую задачу с несколькими переменными.
Если интересно следить, как проект будет развиваться — поставьте лайк и подпишитесь. Дальше буду рассказывать про прогресс в беге, эксперименты с питанием, и про то, как доводить приложение до состояния, в котором его можно показать другим. Когда пойму, что инструмент готов к публичному использованию — обязательно сообщу здесь.
Оставайтесь и следите.