https://github.com/complicat9d/e-commerce-service
Service, comprising of telegram bot for browsing products cataloges, managing user shopping cart and processing orders, and admin panel on django framework
https://github.com/complicat9d/e-commerce-service
aiogram django-admin docker-compose pydantic pytetst sqlalchemy
Last synced: 2 months ago
JSON representation
Service, comprising of telegram bot for browsing products cataloges, managing user shopping cart and processing orders, and admin panel on django framework
- Host: GitHub
- URL: https://github.com/complicat9d/e-commerce-service
- Owner: complicat9d
- Created: 2024-12-03T04:15:48.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-17T05:21:31.000Z (about 1 year ago)
- Last Synced: 2025-06-04T07:45:57.690Z (about 1 year ago)
- Topics: aiogram, django-admin, docker-compose, pydantic, pytetst, sqlalchemy
- Language: Python
- Homepage:
- Size: 228 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Сервис с каталогом продуктов в телеграм боте и админ панелью
Данный проект представляет собой бот, написанный на `aiogram`, и админ панель для редактирования сущностей, рассылок пользователям в бота и выгрузки данных в `.xlsx`, написанную на фреймворке `Django`.
## Функционал
Телеграм-бот позволяет пользователям просматривать каталог товаров с разделением на категории, выбирать нужный товар, указав необходимое количество, и добавлять его в корзину. После этого пользователь попадает в корзину, где может указать адрес доставки и произвести оплату через встроенный платёжный шлюз API Телеграма, или же удалить товар из корзины. Все данные о сделках автоматически сохраняются в отдельной Excel-таблице, выгрузка которой доступна через админ-панель. Также в боте имеется раздел с часто задаваемыми вопросами (FAQ).
В админ-панели реализованы функции регистрации администратора при запуске проекта, а также назначение ролей и прав доступа для других пользователей (пользователей, администраторов, суперпользователей). Для каждой сущности (например, пользователей, товаров, заказов) реализованы операции просмотра, добавления, редактирования и удаления данных. Для сущности "Пользователь" предусмотрена возможность массовых рассылок, а для сущности "Корзина" — выгрузка данных в формате Excel.
---
## Конфигурация и запуск проекта
### Конфигурация переменных окружения
Для корректной работы сервиса нужно создать файл `.env` в корне скопированного проекта и инициализировать следующие переменные из `.env-example`:
```.env-example
TOKEN=
BOT_PAYMENT_PROVIDER_TOKEN=
SECRET_KEY=
DJANGO_SUPERUSER_EMAIL=
DJANGO_SUPERUSER_PASSWORD=
CHANNEL_SUBSCRIPTION_LINK=
CHANNEL_SUBSCRIPTION_CHECK=
GROUP_SUBSCRIPTION_LINK=
GROUP_SUBSCRIPTION_CHECK=
```
`TOKEN` - токен бота, полученный в [@BotFather](https://t.me/BotFather)
`BOT_PAYMENT_PROVIDER_TOKEN` - токен провайдера, который предоставляет доступ к платежному шлюзу (также получается в [@BotFather](https://t.me/BotFather))
При тестировании сервиса использовался тестовый терминал `Paymaster`, креды от тестовой карточки:
```text
Номер карты: 4100 0000 0000 0001
MM/YY: 03/26
CVC/CVV-код: 111
```
`SECRET_KEY` - SHA256 строка для шифрования пароля юзеров в базе данных
_должен быть инициализирован другим значением, а не тем, что стоит по умолчанию в конфиге при разворачивании в прод_
`DJANGO_SUPERUSER_EMAIL` - электронная почта суперюзера
`DJANGO_SUPERUSER_PASSWORD` - пароль от админ панели для суперюзера
`CHANNEL_SUBSCRIPTION_LINK` - ссылка, по которой юзер сможет перейти и подписаться на канал
`CHANNEL_SUBSCRIPTION_CHECK` - ссылка на канал _(https://t.me/)_, `chat_id`, внутренний айди канала
`GROUP_SUBSCRIPTION_LINK` - ссылка, по которой юзер сможет вступить в группу
`GROUP_SUBSCRIPTION_CHECK` - ссылка на группу _(https://t.me/)_, `chat_id`, внутренний айди группы
---
#### Проверка подписки
API Телеграма позволяет проверять подписку на каналы и группы, где бот добавлен в качестве администратора. Основное различие, которое учитывается при проверке подписки, заключается в разных форматах ссылок для вступления в публичные и приватные каналы/группы. В публичных каналах используется юзернейм, в то время как в приватных каналах и группах — хэш, который невозможно идентифицировать напрямую через API.
Тем не менее, если у нас есть внутренний ID канала или группы, то проверка подписки становится возможной. Именно поэтому для проверки используются два поля: ссылка на канал и проверка через `chat_id`, юзернейм или внутренний ID.
_`Внутренний ID`_ канала или группы можно найти в веб-версии Телеграма в строке поиска, он будет последним аргументом в URL (например: `-1002494342292`), либо получить через API, используя личный аккаунт для доступа к данным.
---
### Запуск проекта
_Пререквизит: наличие `docker compose`_
В корне проекта прорпишите следующую команду:
```commandline
docker compose up --build
```
Для запуска без логов:
```commandline
docker compose up --build -d
```