История разработки собственной фитнес платформы
3 поста
Ну что, всё-таки выложил.
Некоторое время назад я показывал здесь приложение для учёта тренировок, питания и прогресса, которое собирал для себя с помощью нейросетей.
Изначально оно вообще не планировалось для публикации. Мне просто надоело жить в десятке Excel-файлов, записывать тренировки в одном месте, вес в другом, питание в третьем, а потом ещё пытаться как-то всё это анализировать.
После прошлого поста почитал комментарии. Часть людей заинтересовалась проектом, часть закономерно покритиковала, а кто-то нашёл баги, которые я сам уже давно перестал замечать.
В итоге решил не забрасывать всё это дело и за последние дни немного привести проект в порядок.
Что успел сделать:
— открыл исходный код и выложил проект на GitHub; https://github.com/IbhodII/Forma-public
— переделал вход через Яндекс, чтобы он больше не был привязан к моим личным идентификаторам;
— починил редактирование блоков упражнений на графике пульса в аналитике тренировок;
— исправил ещё несколько найденных багов и мелких косяков.
Заодно наконец записал полноценный обзор приложения.
Получилось почти 25 минут, потому что решил показать вообще всё, что успел натаскать в программу за эти годы: учёт веса, питания, тренировок, аналитику, интеграцию с Polar, импорт велотреков и прочие вещи, которые раньше жили в таблицах и заметках.
Видеообзор (переложение двух предыдущих постов в видеоформат с демонстрацией всего функционала):
Сам проект для меня во многом эксперимент.
С одной стороны — попытка собрать в одном месте всё, чем я пользовался последние несколько лет для тренировок.
С другой — проверка того, что вообще можно успеть сделать с помощью современных нейросетей за относительно короткое время.
В общем, если кому интересно посмотреть на результат — ссылки на GitHub и обзор оставлю в комментариях.
Ну а если найдёте очередной баг, что очень вероятно.
Отправьте его описание на почту которая указана в приложении, как только появятся деньги на разработку в первую очередь буду править найденные баги
В прошлом посте некоторые справедливо заметили, что одних скриншотов недостаточно, чтобы понять, что проект реально существует и работает.
Если честно, я просто не подумал, что нужно было сразу приложить видео. Для меня приложение уже стало привычной вещью, поэтому мне казалось, что скриншотов и описания будет достаточно.
Поэтому записал небольшую демонстрацию работы Forma.
В видео показано:
- работа десктопного приложения;
- журнал тренировок;
- аналитика по тренировкам;
- импорт данных из Polar;
- велотреки и телеметрия;
- калькулятор калорий;
- замеры тела и часть аналитики.
Отдельно отвечу на вопрос про исходники.
Сейчас я не публикую код не потому, что хочу что-то скрыть, а потому что проект изначально вообще не планировался как публичный. До этой недели я даже GitHub толком не пользовался. Перед публикацией пришлось срочно разбираться с репозиториями, вычищать базы данных, проверять OAuth-интеграции, токены и настройки облачных сервисов.
Я не уверен, что полностью убрал всё лишнее, поэтому пока выложил только документацию, архитектуру, roadmap и скриншоты проекта.
Возможно позже выложу и исходники, но сначала хочу привести их в состояние, за которое не будет стыдно и где точно не останется никаких личных данных.
Ну а пока — вот обещанная демонстрация работы приложения.
Для тех кому лень включать впн и смотреть на ютубе полный обзор я залил сюда, видео 3 так как пикабу урезал видос до трех минут.
Ссылка на ютуб - https://www.youtube.com/watch?v=WHMuwjKzKmc
Отдельное спасибо пользователю @samrrr за вопросы в комментариях к прошлому посту. В том числе благодаря обсуждению понял, что без видео демонстрация действительно выглядит неубедительно.
Всем привет спустя 2 года.
Почти два месяца я сидел без работы. Обычно в такой ситуации люди активно ищут новую работу.
Я тоже искал.
Когда сидишь без работы два месяца, Excel-таблицы начинают казаться лучшими друзьями.
А потом в голову лезут идеи. Очень плохие идеи. Например: «А давай напишем своё фитнес-приложение?»
До сих пор не уверен, насколько это было рациональное решение.
Как я шесть лет превращался в человека-Excel
Всё началось ещё в 2020 году.
Тогда я решил серьёзно заняться спортом.
Первым инструментом учёта была обычная тетрадка.
После каждой тренировки я записывал:
- упражнения;
- подходы;
- веса;
- результаты.
- параметры тела
В какой-то момент я увлекся стенографией и решил вести дневник тренировок с ее помощью. Поэтому архивные данные не подлежат восстановлению
Потом появилась вторая система.
Заметки в телефоне для записи во время тренировки.
Потом калькулятор калорий в маткаде. Потом он переехал в эксель
Потом ещё один Excel для замеров тела.
Потом ещё несколько Excel.
В какой-то момент таблиц стало столько, что я начал путаться, какой файл отвечает за питание, какой за тренировки, а какой вообще уже давно не нужен, но удалить страшно.
Два месяца без работы и плохая идея
В мае 2026 года я уже почти два месяца сидел без работы.
Свободного времени оказалось неожиданно много.
Именно тогда появилась идея объединить всё в одну программу.
На следующий день я узнал, что современные нейросети умеют писать код.
Купил подписку.
И понеслось.
Глава 3. Streamlit прожил недолго
Первая версия была сделана через Streamlit.
Работала она ровно до того момента, пока в неё не попали мои реальные данные.
Оказалось, что несколько лет тренировок и измерений — это уже довольно много информации.
Каждый раз приложение пересчитывало всё заново.
Становилось больно.
Поэтому через пару дней было принято классическое инженерное решение:
Выкинуть всё и переписать заново.
Когда всё зашло слишком далеко
Вместо маленького проекта постепенно появились:
- frontend;
- backend;
- SQLite;
- Electron;
- API-интеграции;
- синхронизация между устройствами.
В какой-то момент я понял, что проект начинает выглядеть подозрительно серьёзно.
Polar и спортивная магия
Так как я использую Polar и нагрудный пульсометр, следующим логичным шагом стало подключение Polar API.
В результате приложение научилось импортировать тренировки и анализировать данные пульса.
Чуть ранее появлась возможность анализировать велотренировки буквально по каждой точке маршрута.
Яндекс.Диск вместо сервера
Когда появилась идея мобильного клиента, возникла проблема.
Серверы стоят денег.
А денег уже оставалось немного.
Поэтому я принял решение, которое одновременно кажется странным и гениальным:
Использовать Яндекс.Диск как транспорт между устройствами.
И что самое удивительное — это работает.
Когда нейросеть решила помочь слишком сильно
Любая история разработки обязана содержать момент страдания.
У меня он тоже был.
В какой-то момент я попросил нейросеть помочь очистить проект от мусора.
Она помогла.
Настолько хорошо, что вместе с мусором удалила архив учебных материалов за шесть лет, 300 гигов игр, несколько учебных программ и архив с книгами по вархаммеру.
До сих пор считаю это самым дорогим удалением файлов в своей жизни.
Почему фитнес-приложение весило 92 гигабайта
После завершения разработки я решил подготовить проект к публикации.
Открыл свойства папки и увидел:
92 ГБ.
Сначала решил, что Windows ошиблась.
Потом проверил ещё раз.
Следующие несколько часов ушли на расследование.
Выяснилось, что внутри лежат:
- базы данных;
- кэши;
- сборки;
- временные файлы;
- результаты импортов.
Папка содержала около 170 тысяч файлов.
Пришлось:
- отделять личные данные;
- искать токены;
- проверять OAuth;
- тестировать установщик;
- создавать отдельного пользователя Windows.
Самым приятным моментом стал запуск программы на новой учётной записи.
Она действительно заработала. (скрина не будет, я уже снес второго пользователя компом)
Что получилось
Через 12 дней получилось полноценное десктопное приложение.
Оно умеет:
- вести журнал тренировок;
- считать питание;
- хранить историю веса;
- анализировать пульс;
- работать с Polar;
- синхронизировать данные через Яндекс.Диск.
Немного цифр
12 дней разработки.
12 тысяч рублей расходов.
74 миграции базы данных.
40+ документов.
500+ силовых тренировок.
199 пробежек.
82 велотренировки.
28 плаваний.
Около 100–130 тысяч строк осмысленного кода.
Что дальше
Сейчас разработка поставлена на паузу.
Следующие цели:
- мобильный клиент;
- Health Connect;
- сон;
- HRV;
- пульс в покое;
- аналитика восстановления.
Спасибо всем, кто дочитал.
Если бы год назад мне сказали, что я буду писать приложение на Electron, FastAPI, работать с OAuth, Polar API и синхронизацией между устройствами, я бы точно не поверил.
Но 2026 год оказался довольно интересным.
Пока она находится в недоделанном состоянии выкладывать код я не хочу. Да и не уверен, что там нет моих личных данных. Поэтому на гитхабе пока только документация проекта
https://github.com/brett263/Forma
Разработка сейчас поставлена на паузу из-за отсутствия бюджета, но в планах:
полноценный мобильный клиент;
Health Connect;
анализ сна и восстановления;
продвинутая спортивная аналитика.
Если проект показался интересным — буду рад обратной связи.
Подойдя вплотную к дворцу императора архипредатель Хорус Пригожин вызвал Императора на дуэль.
Император Человечества принял вызов, возглавив примархов Шойгу и Димона Дорна.
0.500.23.М3 пикт в цвете
Альтернативная история: #comment_276933531
Привет, третьего дня, по примеру проверенного cumрада, который уже заливал свою курсовую на пикабу, решил сделать несколько постов по теме полиэфирных смол и рассказать, что это вообще такое, для чего нужно, и как их делают. Конкретно тема курсовой звучит так:
“Цех по производству ненасыщенной полиэфирной смолы марки НПС-3”
Скорее всего я ограничусь только лит. обзором и тех. схемой производства, немного затронув тему исходного сырья.
Наш сегодняшний пациент — это ненасыщенные полиэфирные смолы (НПЭС). Они являются термореактивным материалами - то есть после затвердевания их нельзя расплавить ( перевести в жидкое состояние).
Так вот, по своей сути НПЭС - это уникальный по своим свойствам продукт©. Получают его из всякого органического говна многоатомных спиртов, многоосновных орг. кислот и их ангидридов. Из своего опыта могу сказать, что неотверждённая смола пахнет как кофе со сливками.
Смолы эти выпускают для множества задач и под множеством марок, начиная художественными изделиями (куда же без них) и заканчивая трубами для транспорта нефти. Так же из них делают компаунды для заливки трансформаторов и другой электротехники.
Вообще НПЭС находят широкое применение практически во всех отраслях промышленности (машиностроение, судостроение), в строительстве и во многих других сферах. Это обусловлено хорошими механическими свойствами, которыми обладают конечные продукты на их основе. Также благодаря относительной доступности и дешевизне сырья материалы на основе НПЭС являются весьма конкурентоспособными по отношению к другим видам пластмасс и обычным конструкционным материалам (древесина, сталь, бетон и др.).
У вас может появица появиться вопрос: «нахера зачем нужны НПЭС, если есть эпоксидные смолы?». В отличии от эпоксидки НПЭС значительно дешевле и отверждаются они гораздо быстрее.
Самый правильный ответ, «Эпоксидка - это девочка, а полиэфир – это мальчик!». ©
Сидя в комнате друзей после курения, мне захотелось узнать какая пищевая ценность одной сигареты. По первой ссылке в гугле я узнал, что она составляет 0.001 Ккал, и тут я загорелся идеей посчитать можно ли прожить на одних сигаретах.
(Спойлер для ЛЛ – нельзя)
Итак, я приступил к расчетам.
Первым делом необходимо было узнать общее количество сигарет в день. Исходя из данных, которые мне подсказал гугл, среднее потребление килокалорий в день – 2500.
2500/0.001 = 2 500 000 сигарет необходимо выкуривать, чтобы покрыть дневную норму.
Дальше я взялся считать потребление калорий в час и секунду.
24 часа в день, из которых 8 уходит на сон и еще 1 час на другие потребности, итого 15 часов в сутки для непрерывного курения.
2 500 000 / 15 = 166 666.67 (необходимо выкуривать в час) округлим до 166667.
166 667 / 60 = 2 777.78 (необходимо выкуривать в минуту) округлим до 2778.
2 778 / 60 = 46.3 (необходимо выкуривать в секунду) округлим до 47.
Далее мной было найдено среднее время курения ( в том же гугле), оно равняется 3 минутам. Понятно, что при большой нужде можно и быстрее.
В 3 минутах 180 секунд, а, следовательно надо выкуривать 47 * 180 = 8460 сигарет одновременно.
Однако в сигаретах содержится никотин, летальная доза которого 6-13 мг/кг. Представим, что наш подопытный очень здоровый человек весом 80 кг, следовательно его летальная доза 13 * 80 = 1 040 мг. В одной сигарете, по все тем же, источникам около 20 мг никотина, но при курении в кровь попадает всего 1 мг.
Таким образом, нашему подопытному нужно выкурить 1 040 сигарет. К сожалению, он умер в первую секунду своей сигаретной диеты.
А теперь давайте посчитаем сколько денег уйдет на такую диету, возьмем самые дешевые сигареты. С 1 января этого года цена не может быть ниже 112 рублей, поэтому возьмем 120р за пачку. В пачке обычно 20 сигарет, а значит нам надо 2 500 000 / 20* 120 = 15 000 000 рублей.
Первый мой самостоятельный пост, не ругайте сильно чукча не писатель
Коммент: #comment_236353206
Сам пост: Японцы создали алмаз с объёмом памяти 25 млрд. ГБ
@X.XP, вам бы в лигу упоротых расчетов вступить
