Skip to content

Str1kez/course_project

Repository files navigation

Telegram Marketplace 🛒

Описание 📄

Магазин в чате telegram с админкой django. Основан на django-mptt - дереве, которое помогает представлять категории и товары в определенной иерархии. Логика работы описана с использованием telegram bot api с библиотекой aiogram, которая позволяет разрабатывать асинхронных ботов.

Демо 🪧

Начнем с админки django 👨‍💻

Создание категории товаров 📶

уровни_категорий

Создание товара 🚗

создание_товара

Создание методов доставки 🚀

методы_доставки

Рассмотрим процесс заказа товара 🛍️

Выбор категории 📶

категории_товара

Выбор подкатегории 📶

подкатегории_товара

Выбор товара 🛍️

список_товаров

Информация о товаре ℹ️

инфо_о_товаре

Процесс оплаты 💰

оплата

Успешная оплата ✅

успешная_оплата

Случай отсутствия товара на складе ❌

Если во время платежа, вдруг, не останется товара на складе, то деньги не спишутся и вылетит такое сообщение

отмена_оплаты

Запуск приложения ▶️

  1. Необходимо, чтобы был установлен Docker.
  2. Создать .env файл в корневой папке с атрибутами:
    • BOT_TOKEN
    • PROVIDER_TOKEN - токен выданный платежным провайдером
    • ADMINS - id админа в телеграме
    • DJANGO_SECRET - секретный ключ для Django
    • DJANGO_SUPERUSER_PASSWORD - пароль для админа в админке
    • DJANGO_USERNAME - ник админа в админке
    • DB_URL - postgreSQL URI, очевидно, что все аргументы в uri должны совпадать со значениями ниже. В поле host написать db, так как Docker предоставляет локальную сеть по имени сервиса.
    • POSTGRES_DB - название для базы данных в СУБД
    • POSTGRES_USER - имя пользователя в СУБД
    • POSTGRES_PASSWORD - пароль для пользователя в СУБД
  3. Выполнить в консоли docker compose up -d
  4. Для остановки/старта использовать docker compose stop / docker compose start. Если необходимо удалить контейнеры и образ, то docker compose down --rmi "local"
  5. Если в код были внесены изменения необходимо запускать с командой docker compose up -d --build, чтобы не брался кэш с прошлого билда
  6. В админку можно зайти с браузера по адресу http://localhost:8001/admin

Используемые технологии 🖥️

Django - веб-фреймворк для поддержки orm и создания админки

Aiogram - асинхронный фреймворк для работы с Telegram bot api

Uvicorn - ASGI сервер для работы Django в асинхронном режиме

Docker - развертывание приложения в автономных контейнерах

Poetry - продвинутый пакетный менеджер для Python