Власний фітнес-трекер в Telegram: пет-проєкт, що замінив платні апки

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Привіт! Знаєте це відчуття, коли вирішив взятися за себе, починаєш слідкувати за калоріями і активністю. Завантажуєш умовний 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

Буду дуже вдячний за конструктивний фідбек у коментарях. Пишіть, чого не вистачає, де логіка тупить, або які фічі ви б хотіли бачити в дашбордах. Найцікавіші та найдоцільніші ідеї я обов’язково спробую реалізувати в наступних апдейтах.

Діліться своїм досвідом: чим ви трекаєте калорії і чи не дістали вас підписки? Усім сухої маси та чистого коду!

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter