Исполнитель: Юрий Кожанов
Домашний каталог вещей с базовыми возможностями. Frontend часть реализована как телеграм бот.
Возможности пользователя в телеграм боте:
- Создать категорию товара
- Редактировать категорию товара
- Удалить категорию товара (сохранить / удалить связанные товары)
- Получить список товаров в категории
- Создать товар
- Редактировать товар
- Использовать товар (при полном использовании товар удаляется)
- Удалить товар
- Получить список всех категорий
- Получить список всех товаров
- Получить список товаров по названию
- Получить список товаров у которых заканчивается скор годности
В сервисе предусмотрена регистрация и аутентификация через JWT Token, пароли пользователей хэшируются перед записью в базу данных.
В качестве frontend используется telegram бот написанный на библиотеке pyTelegremBotAPI.
Сервисом предусмотрено отправка уведомлений пользователю о скором окончании срока годности (через Celery Beat).
Сервис уведомлений создан как микросервис в котором, при необходимости, можно реализовать другие способы уведомлений (взаимодействие через Kafka).
Приложение запускается через Docker Compose и не теряет данные между перезапусками (данные хранятся в PostgreSQL).
Перед использованием приложения убедитесь, что на Вашем устройстве (Linux-based OS) установлен Docker 28.0.1
Клонируйте github репозиторий на Ваше устройство:
git clone https://github.com/ykozhanov/CATalog.git- Перейдите в директорию с репозиторием:
cd CATalog-
Создайте
.envфайл с переменными. Для примера используйте.env-exampleиз репозитория. -
Для генерации RSA ключей можете использовать команды:
-
openssl genrsa -out jwt-private.pem 2048Эта команда генерирует закрытый ключ RSA длиной 2048 бит и сохраняет его в файл jwt-private.pem. -
openssl rsa -in jwt-private.pem -outform PEM -pubout -out jwt-public.pemЭта команда извлекает открытый ключ из ранее сгенерированного закрытого ключа, который хранится в файле jwt-private.pem.
-
- Для запуска выполните в терминале:
docker compose upПосле запуска всех контейнеров (ориентируйтесь на celery-контейнер) примените миграции к базе данных.
Для этого выполните скрипт migrate.sh из директории alembic (Предварительно установив библиотеку alembic на устройство).
Важно: Запускать скрипт необходимо из директории alembic.
Регистрация
Создание нового товара
Список товаров
Список категорий
Информация о категории
Информация о товаре
Список товаров у которых заканчивается срок годности
Использование товара
Полное использование товара
Список товаров без полностью использованного товара
- Python как основной язык программирования;
- FastAPI как backend сервиса;
- PostreSQL как база данных;
- SQLAlchemy 2.0 как ORM инструмент;
- Alembic как инструмент миграций базы данных;
- Celery как инструмент выполнения фоновых задач (уведомлений о товарах у которых заканчивается срок годности);
- Redis как брокер сообщений для фоновых задач;
- Docker для контейнеризации приложения.
По вопросам проекта и другим вопросам связанным с используемыми в проекте инструментам
можно писать на почту ykozhanov97@gmail.com









