Online Market — это современный REST API сервис для создания полноценной платформы электронной коммерции. Система предоставляет удобные инструменты для покупателей, продавцов и администраторов, обеспечивая бесшовный процесс торговли онлайн.
- 👥 Покупатели — удобный поиск товаров, корзина покупок, отслеживание заказов
- 🏪 Продавцы — управление магазином, импорт каталога, мониторинг продаж
- 👨💼 Менеджеры — полный контроль над системой, аналитика, управление заказами
- 🔐 Регистрация и аутентификация через JWT токены
- 🔍 Умный поиск товаров с фильтрацией и сортировкой
- 🛒 Корзина покупок с возможностью управления
- 💳 Оформление заказов с применением скидочных купонов
- 📧 Email-уведомления о статусе заказа с PDF-отчетами
- 📱 Управление профилем и контактными данными
- 🏪 Создание и управление магазином
- 📦 Импорт каталога товаров из YAML-файлов
- 📊 Мониторинг продаж и заказов
- ⚙️ Управление статусом магазина
- 🎯 Просмотр активного каталога
- 🎛️ Административная панель с расширенными возможностями
- 📈 Управление заказами и их статусами
- 🎫 Система скидочных купонов
- 📊 Экспорт данных в формате CSV
- 👥 Управление пользователями и магазинами
- ⚡ Кэширование для оптимизации производительности
- 🔄 Асинхронная обработка тяжелых задач через Celery
- 🚦 Throttling для защиты от злоупотреблений
- 📄 Пагинация для больших объемов данных
- 📚 Swagger документация для разработчиков
- 🧪 Покрытие тестами более 80%
- Framework: Django 5.1.5 + Django REST Framework 3.15
- Database: PostgreSQL 15+
- Cache: Redis 7.0+
- Task Queue: Celery 5.4 + RabbitMQ 3.11
- Authentication: JWT (Simple JWT)
- API Documentation: drf-spectacular (Swagger/OpenAPI)
- Containerization: Docker + Docker Compose
- Testing: pytest + pytest-django + coverage
- Code Quality: Model-bakery для фикстур
djangorestframework— REST APIcelery— асинхронные задачиredis— кэшированиеpsycopg2-binary— PostgreSQL адаптерpillow— обработка изображенийreportlab/weasyprint— генерация PDF
- Docker 24.0+
- Docker Compose 2.20+
- Клонируйте репозиторий
git clone <repository-url>
cd RetailProject- Создайте файл
.env
cp .env.example .env
# Отредактируйте .env с вашими настройками- Запустите проект
docker-compose up -d- Примените миграции
docker-compose exec web python manage.py migrate- Создайте суперпользователя
docker-compose exec web python manage.py createsuperuser- Готово! 🎉
- API: http://localhost:8000/api/v1/
- Admin: http://localhost:8000/admin/
- Swagger: http://localhost:8000/api/docs/
Подробная документация доступна в файле DOCUMENTATION.md, включая:
- 🏗️ Архитектура системы
- 📥 Детальные инструкции по установке
- 🔧 Конфигурация и настройка
- 💻 Примеры использования API
- 🐛 Решение проблем
POST /api/v1/user/register Регистрация пользователя
POST /api/v1/user/register/confirm Подтверждение email
POST /api/v1/user/login Вход в систему
POST /api/v1/user/login/refresh Обновление токена
GET /api/v1/user/account Профиль пользователя
POST /api/v1/user/account Обновление профиля
GET /api/v1/user/contact Список контактов
POST /api/v1/user/contact Создание контакта
GET /api/v1/products/products Каталог товаров
GET /api/v1/products/categories Категории товаров
GET /api/v1/products/shops Список магазинов
GET /api/v1/products/popular Популярные товары
GET /api/v1/buyer/shoppingcart Корзина покупок
POST /api/v1/buyer/shoppingcart Добавить в корзину
PUT /api/v1/buyer/shoppingcart Изменить количество
DELETE /api/v1/buyer/shoppingcart Удалить из корзины
GET /api/v1/buyer/orders Заказы покупателя
POST /api/v1/buyer/orders Подтвердить заказ
POST /api/v1/seller/shop Создать магазин
GET /api/v1/seller/status Статус магазина
POST /api/v1/seller/goods Импорт товаров
GET /api/v1/seller/products Каталог магазина
GET /api/v1/seller/orders Заказы магазина
GET /api/v1/manager/orders Все заказы
POST /api/v1/manager/orders Обновить статус заказа
GET /api/v1/manager/coupons Список купонов
POST /api/v1/manager/coupons Создать купон
📖 Полная документация: http://localhost:8000/api/docs/
curl -X POST http://localhost:8000/api/v1/user/register \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "SecurePass123!",
"username": "newuser",
"first_name": "John",
"last_name": "Doe",
"type": "BR"
}'curl -X GET "http://localhost:8000/api/v1/products/products?category_id=1&ordering=price" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"curl -X POST http://localhost:8000/api/v1/buyer/orders \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": 1,
"contact": 1,
"coupon_code": "DISCOUNT10"
}'Больше примеров в DOCUMENTATION.md
# Запуск всех тестов
pytest
# С отчетом о покрытии
pytest --cov=backend --cov-report=html
# Конкретный модуль
pytest tests/backend/test_api.py -vRetailProject/
├── backend/ # Основное приложение Django
│ ├── models.py # Модели данных
│ ├── views.py # API views
│ ├── serializers.py # DRF сериализаторы
│ ├── tasks.py # Celery задачи
│ └── ...
├── retail/ # Настройки проекта
│ ├── settings.py # Конфигурация Django
│ ├── celery.py # Настройки Celery
│ └── ...
├── tests/ # Тесты
├── docker-compose.yml # Docker конфигурация
├── requirements.txt # Python зависимости
├── DOCUMENTATION.md # Детальная документация
└── README.md # Этот файл
Contributions приветствуются! Пожалуйста:
- Форкните репозиторий
- Создайте feature branch (
git checkout -b feature/AmazingFeature) - Закоммитьте изменения (
git commit -m 'Add some AmazingFeature') - Запушьте в branch (
git push origin feature/AmazingFeature) - Откройте Pull Request
InnCent
- GitHub: @InnokentiyKim
