tracking-habits
Описание
Чат-бот для трекинга привычек
Языки
Python
- Dockerfile
- Mako
- Shell
Чат-бот для трекинга привычек
сервис, дающий пользователям возможность эффективно управлять своими привычками через бот в Telegram.
Функционал приложения:
Основные функции приложения на стороне телеграм-бота:
- добавление и удаление привычек, полный функционал по редактированию;
- функция фиксации выполнения привычки: выполнил / не выполнил;
- напоминание о необходимости выполнить привычку с фиксацией.
Основная функция сервисного скрипта:
- оповещение пользователя в заданное время.
Основные функции приложения на стороне backend (FastAPI):
- хранение и обработка данных, полученных от пользователя (запросы из телеграм-бота);
- аутентификация и авторизация телеграм-бота для доступа к данным.
Оглавление
Описание
Телеграм-бот.
Этот слой используется как фронтенд-составляющая сервиса. Он нужен для доступа пользователей к своим привычкам, а также обеспечивает полный функционал по их редактированию.
Сервис аутентификации.
Этот слой отвечает за методы работы с привычками со стороны FastAPI. Он реализует основные методы CRUD, используемые пользователями через телеграм-бота. Он также обеспечивает авторизацию действий пользователя в момент запроса к базе данных.
Механизм переноса привычек.
Список привычек дублируется на следующий день, привычки удаляются из списка после их проработки.
Сервисный скрипт оповещений.
Работает в фоновом режиме. Уведомляет пользователя о необходимости выполнить привычку в заданный момент времени.
В качестве базы данных используется связка: PostgreSQL — SQLAlchemy — Alembic.
Приложение запускается средствами Docker-compose.
Запуск сервиса
- Клонировать репозиторий https://gitverse.ru/mas-chel/tracking-habits.git
- Переименовать файл example.docker.env в docker.env и заполнить данные базы данных:
- POSTGRES_DB - имя базы данных
- POSTGRES_USER - имя пользователя
- POSTGRES_PASSWORD - пароль
- В модуле tracking-bot переименовать файл example.env.prod в .env.prod и заполнить данные:
- BOT_CONFIG__BOT__TOKEN - токен бота, получить можно тут @BotFather
- BOT_CONFIG__BOT__SERVICE_AUTH_TOKEN - сервисный токен, можно создать командой в терминале openssl rand -hex 32
- В модуле tracking-habits переименовать файл example.env.prod в .env.prod и заполнить данные:
- APP_CONFIG__DB__URL=postgresql+asyncpg://user-name:password@pg_container:5432/db-name, где:
- user-name - имя пользователя из п.2
- password - пароль из п.2
- db-name - имя базы данных из п.2
- APP_CONFIG__BOT__service_auth_token - сервисный токен из п.3
- APP_CONFIG__DB__URL=postgresql+asyncpg://user-name:password@pg_container:5432/db-name, где:
- Выполнить docker compose up
Документация
Документация API будет доступна после запуска приложения по адресу http://127.0.0.1:8000/docs#/
Технологический стек
- python 3.12
- fastapi 0.111.0
- uvicorn {standart, version 0.30.1}
- pydantic-settings 2.3.4
- sqlalchemy {asyncio, version 2.0.31}
- asyncpg 0.29.0
- alembic 1.13.2
- bcrypt 4.1.3
- pyjwt 2.8.0
- loguru 0.7.2
- cryptography 42.0.8
- orjson 3.10.7
- pytelegrambotapi 4.20.0
- aiohttp 3.9.5
- apscheduler 3.10.4