Skip to content

Aleksander1Byte/CalorieCounter

Repository files navigation

Calorie Counter

CI Deploy FastAPI Python Telegram

Проект реализован как Rest API на FastAPI с отдельным Telegram-ботом, взаимодействующим с backend по HTTP

Что такое Calorie Counter?

Calorie Counter - сервис для измерения КБЖУ и микронутриентов блюд по текстовому описанию, изображению или голосовому сообщению

Пример работы

Демо работы бота

Больше примеров можно посмотреть в Wiki.

⚙️ Реализованная функциональность

Backend (FastAPI)

  • REST API для асинхронной записи/чтения/удаления данных
  • Изоляция данных между пользователями (доступ только к своим записям)
  • Агрегация записей пользователя за день
  • Воспроизводимые миграции через Alembic
  • Таблицы моделей для БД через SQLAlchemy Core
  • Валидация входных данных и обработка ошибок
  • Анализ содержания блюда по тексту или картинке через внешнюю LLM
  • Использование строго Repository Pattern + отсутствие ORM

Клиент (Telegram Bot)

  • Отдельный frontend-клиент, взаимодействующий с backend через HTTP
  • Приём текстов, изображений и голосовых сообщений до 2 минут
  • Локальная расшифровка voice message через faster-whisper без внешних speech-to-text API
  • Взаимодействие с данными строго через API
  • Использование заголовков для аутентификации пользователя

🛠 Технологии

Backend:

  • Python 3.10
  • FastAPI
  • PostgreSQL
  • AsyncIO
  • SQLAlchemy Core

Frontend:

  • Telegram Bot (aiogram)
  • httpx
  • logging

Инфраструктура и инструменты:

  • Docker, docker-compose
  • Github Actions (CI/CD)
  • flake8

Как пользоваться ботом?

Найдите бота в Telegram: @CalorieMicroBot

Основные команды:

Команда Описание
/start Начать работу
/today Показать сумму КБЖУ за сегодня
/last Посмотреть последнюю запись
/delete_last Удалить последнюю запись
[Текст, изображение или голосовое до 2 минут] Получить анализ КБЖУ и микронутриентов

Архитектура проекта

                                   ┌──────────────────┐
                                   │   LLM (Gemma)    │
                                   └────────▲─────────┘
                                            │ async httpx
                                            │
┌─────────────────┐    REST API    ┌────────▼─────────┐     ┌──────────────┐
│   Telegram Bot  │ ◄────────────► │     FastAPI      │ ◄─► │   Database   │
│    (Frontend)   │                │    (Backend)     │     │ (PostgreSQL) │
└─────────────────┘                └──────────────────┘     └──────────────┘

Автор

Aleksander1Byte

GitHubTelegram

About

@CalorieMicroBot

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors