![](https://habrastorage.org/getpro/habr/upload_files/aa2/0a0/fb3/aa20a0fb3c73ac77e0769ce1b5bc1f87.jpg)
Проблема
В июле 2018 года я заканчивал универ и готовился искать свою первую работу в IT. Казалось бы, спокойное и беззаботное время. Вся жизнь впереди, но... Тогда я весил целых 132 килограмма, а это много даже при моём росте 190+ см.
Начались проблемы со здоровьем: болели ноги, мне было тяжело ходить и даже сидеть, а из-за высокого артериального давления у меня постоянно шла кровь из носа. Стало понятно: с этим нужно что-то делать.
Для начала я решил обратиться к врачу и пройти обследование. Его первой частью была биоимпедансометрия. Меня подключили к устройству, которое анализирует состав тела и выводит подробный отчёт на основе множества метрик. В моём случае важны были две:
Должный основной обмен (ДОО). Показывает минимальное количество энергии, необходимое организму в сутки.
Процент активной клеточной массы (% АКМ). Определяет уровень обмена веществ. Как я понял, чем его значение выше, тем лучше организм сжигает жиры. У меня оно было сильно ниже нормы.
![Отчет о моем составе тела в 2018 году Отчет о моем составе тела в 2018 году](https://habrastorage.org/getpro/habr/upload_files/f07/7fe/422/f077fe42266a4a924c62201fe0064c0f.jpeg)
Вторая часть обследования состояла из обычного осмотра и сдачи анализов. По её итогу никаких болезней выявлено не было. Причина моих проблем была проста: я мало двигался и много ел.
![](https://habrastorage.org/getpro/habr/upload_files/50a/2e1/98d/50a2e198daacb3f2e65fc0ea91de6855.png)
Врач мне порекомендовал:
Контролировать питание. Количество потребляемых калорий должно быть в пределах моего ДОО — до 1767 ккал в день. В дни, когда я занимаюсь спортом, — до 2000 ккал.
Изменить рацион. Исключить сладкое и мучное, заменить простые углеводы на сложные, увеличить количество белка.
Регулярно заниматься спортом.
Раз в месяц проходить повторный осмотр. Он включает анализ состава тела и отслеживание основных метрик — ДОО и %АКМ.
Для контроля питания врач дал мне дневник. В него нужно было записывать всё, что я ем.
![](https://habrastorage.org/getpro/habr/upload_files/aef/d5e/94e/aefd5e94e47f129c0d6be001fce74428.jpeg)
По рекомендациям врача я:
отказался от бананов, сладостей, белого хлеба, булок, картофеля и частично риса;
начал есть фрукты и овощи каждый день. Причём фрукты нужно было есть строго до 14:00;
увеличил количество сложных углеводов: гречки, кускуса, булгура, киноа и других круп. Стал есть больше белка: яиц и мяса на пару;
заменил булочки, чипсы и конфеты на грецкий орех, фундук, миндаль и кешью. В умеренном количестве они стали хорошим вариантом для перекуса;
перестал добавлять соль и сахар в еду;
выпивал по 1.5-2 литра воды в день;
стал больше бегать и ходить. Начал делать зарядку.
Поначалу следовать новым правилам было тяжело, да и получалось не всегда, но я старался. Врач давал рекомендации, что хорошо, а что нужно изменить:
![Страница дневника с пометками от врача Страница дневника с пометками от врача](https://habrastorage.org/getpro/habr/upload_files/681/061/bd4/681061bd4e6958a75a4a05dc67bf2933.jpeg)
Как появилось приложение
Я вёл дневник питания на протяжении нескольких месяцев. Взвешивал продукты, считал калории и всё в него записывал. Это отнимало много сил и времени.
Да и дневник заканчивался — оставалось буквально несколько страниц. Поэтому я начал делать сканы разворота и заполнять их, чтобы не чертить таблицу вручную:
![](https://habrastorage.org/getpro/habr/upload_files/f2d/a5e/bf2/f2da5ebf2b0de3b0834c0b0daf496879.png)
Параллельно я безуспешно искал работу. Опыта у меня не было, только диплом... И тут я понял: у моих проблем одно решение — написать приложение, которое будет автоматизировать подсчёт калорий, добавить его в портфолио и показывать на собеседованиях.
Я быстро начал разрабатывать веб-приложение. Времени было немного, так что я фокусировался на главном и не заморачивался над красотой UI и функциональностью. Стек выбрал тот, который тогда знал лучше всего:
.NET Framework 4.6;
ASP NET MVC 5;
MS SQL;
Bootstrap, jQuery.
Труднее всего мне давалась вёрстка и логика UI, поскольку до этого я почти не занимался фронтендом. Я читал статьи и целые блоги, искал готовые решения, периодически копипастил готовый код. Ну а кто так не делал?
В октябре 2018 года я запустил у себя на компьютере первую версию приложения «Дневник питания» (Food Diary) и начал им пользоваться. Тогда оно выглядело так:
![](https://habrastorage.org/getpro/habr/upload_files/c07/cc9/1df/c07cc91df962a6c4fb0e0c788d456ae0.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/5e7/b61/666/5e7b616665ea4054694efcaf91b8fc98.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/06a/260/226/06a260226e8c58092da58c27c92ce2d2.jpeg)
Идея приложения проста: вы создаёте запись, указываете продукт и его количество. Записи группируются по приёмам пищи — завтрак, обед и так далее — и по дням. Энергетическая ценность продуктов в килокалориях на 100 г. веса указывается во встроенном справочнике. Приложение берёт эту цифру и через пропорцию рассчитывает количество калорий для введённого веса продукта. Калории из всех записей суммируются и выводятся в таблице.
Я перестал тратить уйму времени на то, чтобы вручную высчитывать калории и пропорции — это делало за меня приложение. А чтобы каждый раз не считать, сколько калорий в каждом блюде, я создал свою базу данных продуктов и постоянно её обновлял. С помощью своего приложения я отслеживал, что я ем чаще всего, сколько калорий я в среднем съедаю за неделю или месяц, как часто я превышаю свою норму.
Год спустя
В течение года я вёл дневник питания с помощью своего приложения. Чтобы было удобнее, я написал скрипт, выгружающий отчёты из базы данных. Их я относил врачу, и мы вместе анализировали состав тела и мой рацион.
![За год у меня накопилась целая стопка таких отчётов За год у меня накопилась целая стопка таких отчётов](https://habrastorage.org/getpro/habr/upload_files/4e1/419/4dd/4e14194dd00594e85dde71fdfa852c32.jpeg)
В итоге через год мой вес снизился до 97 кг:
![](https://habrastorage.org/getpro/habr/upload_files/afc/6e7/2c5/afc6e72c5eb701ea22bc21839d823748.png)
Проблемы со здоровьем, которые меня беспокоили, исчезли. Энергии и сил стало больше. Визуально изменения тоже были заметны:
![Слева я в 2018 году, а справа — в 2019 Слева я в 2018 году, а справа — в 2019](https://habrastorage.org/getpro/habr/upload_files/5f5/f20/ca1/5f5f20ca16121206f7b4347a22d2a9f1.jpg)
Казалось, цель достигнута, видимый результат есть и можно расслабиться, но нет. Врач сказал, что в моём организме начали перестраиваться обменные процессы, а на это нужно время — около двух лет. Если бы я забил на диету, лишний вес вернулся бы через месяц.
Поняв, что всё только начинается, я решил сделать своё приложение более современным, удобным и функциональным. В общем, полностью его переосмыслить и переписать.
Как я развивал приложение
2019
Изначально моё приложение было монолитом — фронтенд и бэкенд были вместе. Я решил их разделить на два независимых приложения, а также обновить стек. Основными критериями в выборе инструментов были современность и популярность. Я хотел не только сделать приложение, но и приобрести навыки, которые мне пригодятся в будущем.
С выбором инструментов для бэкенда я не заморачивался. .NET я знал неплохо, а потому просто перешёл с .NET Framework на .NET Core. Он тогда набирал популярность и получил стабильную третью версию. А ещё я заменил MS SQL на PostgreSQL.
С фронтендом было сложнее. Я был наслышан о разных популярных фронтенд-фреймворках и библиотеках, упрощавших разработчикам жизнь: React, Angular и отстававший от них Vue. Я стал изучать React.
Я начал разрабатывать вторую версию приложения. Всё шло неплохо, пока мне не пришло в голову разработать собственную дизайн-систему.
«Моё приложение должно быть суперудобным и красивым. Зачем мне готовые компоненты? Хочу свой уникальный дизайн! Конечно, я не дизайнер, но что там сложного? Сидишь, кнопочки тыкаешь в Фигме» — думал я.
На отрисовку компонентов и UI ушло около двух месяцев, на вёрстку примерно столько же. В итоге получился вот такой «шедевр»:
![](https://habrastorage.org/getpro/habr/upload_files/525/60b/b14/52560bb14753c1443f6138e43a35d562.jpeg)
Тогда мне казалось, что я сделал крутой UI. Ровно до того момента, пока сам не начал им пользоваться.
2020
Со временем пришло осознание, что моя дизайн-система, мягко говоря, не очень. Приложение выглядело безобразно, а пользоваться им было неудобно.
Только тогда я задумался об использовании готовых компонентов. Критерии их выбора не отличались от тех, по которым я выбирал инструменты для разработки: популярность и современность. Мне подходили Ant Design и Material UI. Я остановился на последнем и полностью переделал интерфейс.
![](https://habrastorage.org/getpro/habr/upload_files/67d/2c1/fda/67d2c1fda0878c6687ea292acd768ab2.png)
2021
Прошли 2 года, в течение которых я должен был контролировать вес. Я перестал ходить к врачу и контролировал себя сам: вёл дневник и каждую неделю взвешивался. Вес держался на уровне 95-97 кг. — меня это устраивало.
2022
Со временем я перестал вести дневник. Какое-то время я по привычке развивал приложение, но потом потерял к нему интерес и забросил его.
2023
В декабре 2023 года ситуация изменилась: встав на весы, я внезапно увидел 99 кг. Возвращаться к лишнему весу и проблемам со здоровьем не хотелось, особенно после всей проделанной работы.
Тогда я вспомнил про своё приложение и снова стал вести дневник питания. Спустя какое-то время я понял, почему вес стал расти — калораж моего рациона увеличился до 2300-2400 калорий в день, а это сильно выше моей нормы.
Мой «Дневник питания» снова мне помог. Благодаря ему я вернул контроль над калориями и стал держать вес на уровне комфортных 95-97 кг.
2024
Ведение дневника питания стало полезной привычкой, а всё, чем я пользуюсь на постоянке, есть в моём смартфоне: приложения банков, доставок, напоминалок и т.д. У моего дневника мобильной версии не было — все заметки я делал с ноутбука, а это было неудобно.
Так я решил превратить своё веб-приложение в мобильное. У меня не было опыта мобильной разработки, так что я сделал PWA и адаптировал интерфейс под экраны смартфонов.
![](https://habrastorage.org/getpro/habr/upload_files/a8b/5ae/af7/a8b5aeaf775ba9ad85c75257f083de54.jpg)
Первая проблема возникла уже на этапе добавления нового продукта — приходилось вручную вводить его название, калории и граммовки. На смартфоне это было делать неудобно. Тогда же я узнал, что OpenAI выпустила новую модель GPT-4o. Она умела отвечать на вопросы по картинкам.
В качестве эксперимента я внедрил в приложение функцию подсчёта калорий по фотографии продукта. Я отправлял изображение в API OpenAI, где оно анализировалось — модель находила продукт, высчитывала его примерный вес и количество калорий, а потом возвращала данные в формате JSON.
Теперь мне достаточно сфотографировать продукт или этикетку — остальное дело техники. Работает не всегда точно, но время экономит.
![](https://habrastorage.org/getpro/habr/upload_files/a94/55f/2c3/a9455f2c332d54592e98074223b6acc5.gif)
Дневник веса я изначально вёл в Google Sheets, но заполнять таблицу со смартфона тоже было неудобно. Поэтому я добавил в приложение ещё и функцию отслеживания веса:
![](https://habrastorage.org/getpro/habr/upload_files/144/cb5/801/144cb5801afd8d913b98088b74459100.jpg)
На текущий момент я использую:
Yandex Cloud для развёртывания приложения в облаке;
Supabase в качестве базы данных. В бесплатной версии они дают 500 Мб. Мне пока хватает;
ProxyAPI для доступа к OpenAI API из России.
Суммарно вся инфраструктура стоит около 30 руб. в месяц. Код можно посмотреть на GitHub.
Впрочем, история на этом не заканчивается. Я продолжаю пользоваться приложением, а значит и развивать его. Сейчас работаю над процессом заполнения новых записей — делаю его удобнее и быстрее.
Почему я не пользуюсь готовыми приложениями
Многие спросят: почему я не пользуюсь похожими готовыми приложениями, а продолжаю писать своё? Зачем изобретать велосипед?
Работая над собственным приложением, я прокачиваю свои скиллы, изучаю новое, применяю эти знания на практике с пользой для себя и делюсь своими наработками с другими. Я не пытаюсь превзойти FatSecret, SnapCalorie и другие подобные приложения.
О силах и времени, вложенных в своё решение, я не жалею. Да и достойных open-source проектов такого типа я не нашёл, тем более бесплатных. Есть, конечно, OpenNutriTracker, но он сыроват, как мне кажется.
Выводы
В интернете есть много подборок «топ X идей для пет-проектов» и советов в духе «сделайте клон «Твиттера», «Нетфликса», «Джиры». Раньше я им следовал и разрабатывал календари, тудушники, клоны популярных приложений. Однако каждый раз я терял мотивацию и тратил время и силы впустую.
«Дневник питания» напротив — существует уже 6 лет. Как же я не потерял мотивацию и почему продолжаю его разрабатывать? Всё просто: я сам им пользуюсь. Он решает мою конкретную проблему. В остальных моих пет-проектах не было смысла в первую очередь для меня.
Из этой истории я сделал для себя такие выводы:
Пет-проект, отнимающий у тебя время и силы, должен решать проблему — твою или чью-то чужую, но близкую и понятную тебе.
Если решил начать новый проект, не мудри и не упарывайся. Используй готовые библиотеки и делай как можно проще. Пилить свою дизайн-систему без соответствующего опыта не стоит.
Держи фокус на одном или двух проектах. Брать больше не стоит — до конца не доведёшь ни один.
Периодически делай перерывы и экономь силы. Не пытайся сделать всё и сразу.
В любом случае свой проект — это круто. Главное, принести явную пользу себе или другим, решить или закрыть какую-то явную проблему. Тогда всё получится.
Комментарии (4)
weart
14.02.2025 11:42Я бы на вашем месте сменил врача с такими рекомендациями.
Из личного опыта - за последние 3.5 месяца мой вес 92.6 -> 85.9 без ограничений по продуктам питания и дефиците калорий около 15% (питаюсь на 2700кк при росте 187)
Потреблять больше калорий в дни тренировок и меньше в дни отдыха - это вообще кринж
Что касается приложения - те, что в маркетах, это, в большинстве случаев, боль. Я довольно много времени потратил на поиск и тестирование, остановился на Tasager (использую на ios). На редкость приятная минималистичная штука, может, подчерпнете какие-нить фишки у них.pkirilin Автор
14.02.2025 11:42Про Tasager не знал, посмотрю. Спасибо за наводку
По поводу врача, возможно. Тут я некомпетентен, чтобы оценивать) Предположу, что нет универсальных рекомендаций по похудению на все случаи жизни. Организм у всех разный. Кто-то может годами есть сладкое/фастфуд и не толстеть, а для кого-то любое отклонение от диеты – сразу плюс килограммы.
Но и в моем, и в вашем случае есть результат, это главное
makobs
Какая кайфовая история. Паша, спасибо!
pkirilin Автор
Спасибо)