Власний фітнес-трекер в Telegram: пет-проєкт, що замінив платні апки
Привіт! Знаєте це відчуття, коли вирішив взятися за себе, починаєш слідкувати за калоріями і активністю. Завантажуєш умовний MyFitnessPal, YAZIO чи якийсь із нових модних трекерів. Спочатку все супер, але потім починається: підписка за адекватний функціонал коштує недешево, а в додатках безкоштовні ліміти закінчуються швидше, ніж ти встигаєш доїсти свій сніданок.
Після чергового повідомлення «Buy Premium» я вирішив, що з мене досить. Вирішив зробити свій власний інструмент, який би закривав мої потреби, був завжди під рукою і не просив грошей на кожному кроці.
Сьогодні хочу поділитися досвідом створення свого пет-проєкту — розумного Telegram-бота з повноцінним Mini App для трекінгу калорій, активності та метрик.
Gemini чи OpenAI
Початковий план був класичним: прикрутити до бота ChatGPT (gpt-4o). Але під час тестування я швидко зрозумів, що API від OpenAI для пет-проєкту, куди ти регулярно кидаєш запити, швидко «з’їдає» баланс. Тому я переписав логіку під Gemini .
Стек вийшов таким: Next.js (App Router), Telegraf, Supabase (PostgreSQL) для бази даних, та Gemini API для розумної обробки тексту.
Що під капотом і що вміє бот
Глобально це кишеньковий нутриціолог та фітнес-коуч, який живе у вашому месенджері. У нього працює розумний роутер на базі LLM, який класифікує наміри.
- Швидкий фуд-трекінг: Пишеш у чат «з’їв тарілку борщу з шматком хліба і сметаною» — він сам розбирає це на білки, жири, вуглеводи та калорії, після чого записує в БД.
- Трекінг активності: Пишеш «побігав 30 хвилин, спалив 350 ккал» — фіксує тренування.
- Контроль показників: Зберігає вагу, вираховує індекс маси тіла та трекає силові показники в базових вправах (жим лежачи, станова тяга, присід).
Еволюція та факапи з комп’ютерним зором
Як і будь-який пет-проєкт, застосунок пройшов через стадію «очікування vs реальність».
Спроба зробити «все по фото» Спочатку я хотів зробити магію комп’ютерного зору. Задум: ти просто фоткаєш свою тарілку, а ШІ сам розпізнає страву і рахує грами. З тренуваннями те саме — кидаєш скріншот з Apple Fitness чи Garmin, і бот парсить результати.
Чому не вийшло? Модель виявилася надто оптимістичною. Розпізнавання їжі по фото працювало нестабільно: ШІ часто не міг адекватно оцінити розмір порції, не бачив олію, на якій все смажилося, або плутав інгредієнти. Зі скріншотами тренувань — ще більший жах. У кожного свій застосунок (Apple Health, Garmin, Strava), у кожного свій інтерфейс та мова. Парсити їхні скріни виявилося абсолютно неадекватним завданням.
Робочий варіант Я відмовився від аналізу суто по фотографіях. Найбільш доцільним і точним виявився звичайний текстовий ввід. Замість того, щоб парсити скрін з годинника, швидше написати: «спалив 400 ккал». Оскільки всі ми використовуємо різні апки для трекінгу (хтось годинник, хтось телефон), текстовий варіант — найуніверсальніший. Те саме з їжею: детальний текстовий опис (навіть надиктований голосом) дає в рази точніший підрахунок КБЖУ, ніж просто фото.
Telegram Mini App: Коли тексту в чаті стало замало
Спілкуватися з ботом текстом — це зручно для вводу даних. Але для аналізу своїх результатів читати простирадла тексту в чаті — суцільний жах. Ти не бачиш динаміки.
Тому я прикрутив до бота Telegram Mini App (Web App).



Тепер у застосунку є повноцінний UI/UX рівня нативних iOS/Android додатків, але без необхідності виходити з Telegram:
- Кругові прогрес-бари для денних цілей (як кільця активності в Apple, тільки для ККАЛ, Білків, Жирів та Вуглеводів).
- Графіки спожитих калорій за останні 7 днів.
- Календар активності.
Тобто ввід даних працює блискавично через чат бота (написав повідомлення — ШІ розпізнав і зберіг), а аналітика і графіки — через красивий інтерфейс Mini App. Найкраще з обох світів.
Сильні та слабкі сторони
Плюси:
- Швидкість: Не треба відкривати важкі додатки, шукати страву серед 100500 варіантів.
- UI/UX: Графіки та кільця прогресу в Mini App роблять трекінг наглядним і приємним.
- Контекстність: Це AI-коуч, який бачить твої результати за тиждень і може щось адекватно порадити.
- Ціна: Завдяки Gemini та безкоштовним лімітам на інфраструктуру (Supabase, Vercel), утримання проєкту коштує копійки порівняно з цінами на преміум у популярних апках.
Мінуси:
- Похибка: Якщо описати страву дуже ліниво («з’їв бургер»), калораж буде усередненим. Чим точніший опис — тим точніші цифри.
Запрошую на бета-тест!
Зараз я активно тестую систему на собі, і результати мене дуже тішать — рутина щоденного трекінгу стала набагато легшою та інтерактивнішою.
Вирішив відкрити застосунок для публічного тестування. Поки маю доступ до API та ліміти токенів, запрошую всіх бажаючих помацати цей інструмент!
@fitness_life_tracker_bot Або за прямим посиланням: t.me/fitness_life_tracker_bot
Буду дуже вдячний за конструктивний фідбек у коментарях. Пишіть, чого не вистачає, де логіка тупить, або які фічі ви б хотіли бачити в дашбордах. Найцікавіші та найдоцільніші ідеї я обов’язково спробую реалізувати в наступних апдейтах.
Діліться своїм досвідом: чим ви трекаєте калорії і чи не дістали вас підписки? Усім сухої маси та чистого коду!
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів