Software Shop — это веб-приложение на Django с Telegram-ботом для уведомлений о покупках и подписках. Проект включает полноценную админку, REST API, работу с PostgreSQL и асинхронным ботом на python-telegram-bot, разворачивается через docker-compose.
- 🔐 JWT-аутентификация с
djoser - 📦 Управление товарами, вариантами, подписками и покупками
- 🤖 Асинхронный Telegram-бот, уведомляющий о покупках и подписках
- ⚙️ Админ-панель Django
- 🐘 PostgreSQL в контейнере
- 📄 Автозагрузка фикстур
- 💅 Линтинг с
isortиblack
- Backend: Django 4+, DRF (Django REST Framework)
- Telegram Bot:
python-telegram-bot - База данных: PostgreSQL 17
- Docker & Docker Compose
- JWT-аутентификация (
djoser) - Python 3.12+
git clone https://github.com/olexasha/software_shop.git
cd software_shopВ корне проекта создайте файл .env. Там укажите переменные SECRET_KEY и TG_BOT_TOKEN. Либо пробрасывайте через docker-compose.yml переменные окружения.
Убедитесь, что установлены Docker и Docker Compose.
docker-compose up -dpostgres — база данных PostgreSQL
migrations — применение миграций
fixtures — загрузка фикстур
app — основной Django-сервер на localhost:8000
tg_bot — Telegram-бот
.
├── docker-compose.yaml
├── Dockerfile
├── pyproject.toml
├── README.md
├── requirements.txt
├── setup.cfg
└── software_shop
├── fixtures
│ ├── products_product.json
│ ├── products_productvariant.json
│ ├── products_purchase.json
│ ├── subscriptions_tariff.json
│ ├── subscriptions_usersubscription.json
│ └── users_customuser.json
├── __init__.py
├── manage.py
├── products
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ ├── models.py
│ ├── permissions.py
│ ├── serializers.py
│ ├── signals.py
│ ├── urls.py
│ └── views.py
├── software_shop
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── subscriptions
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ ├── models.py
│ ├── serializers.py
│ ├── urls.py
│ └── views.py
├── templates
├── users
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ ├── models.py
└── utils
├── has_subscription_middleware.py
├── __init__.py
├── tg_bot
│ ├── bot.py
│ ├── db.py
│ ├── handlers.py
│ ├── helpers.py
│ ├── __init__.py
└── upload_fixtures.shGET /products/
POST /products/
GET /products/{id}/
PUT /products/{id}/
DELETE /products/{id}/
GET /product/{product_pk}/variants/
POST /product/{product_pk}/variants/
GET /product/{product_pk}/variants/{pk}/
PATCH /product/{product_pk}/variants/{pk}/
DELETE /product/{product_pk}/variants/{pk}/
GET /purchases/
POST /purchases/GET /tariffs/
GET /subscription/
POST /subscription/admin/ — Django админка
djoser/ — эндпоинты регистрации и логина
djoser/jwt/ — эндпоинты получения и обновления JWT-токена
djoser/password/reset/ — эндпоинты сброса пароля
djoser/password/reset/confirm/ — эндпоинты подтверждения сброса пароля
djoser/password/reset/complete/ — эндпоинты завершения сброса пароля
Проект использует следующие линтеры:
black — автоформатирование кода
isort — сортировка импортов
black .
isort .После применения миграций автоматически загружаются фикстуры через сервис fixtures, который исполняет utils/upload_fixtures.sh.
Telegram-бот написан с использованием python-telegram-bot. Он асинхронно оповещает пользователей о следующих событиях:
- Покупка товара
- Подключение подписки
📬 Контакты