Skip to content

InnokentiyKim/Retail

Repository files navigation

🛍️ Online Market

Полнофункциональный REST API сервис для интернет-торговли

Coverage Status Django PostgreSQL Redis Docker

ВозможностиТехнологииБыстрый стартДокументацияAPI


📋 О проекте

Online Market — это современный REST API сервис для создания полноценной платформы электронной коммерции. Система предоставляет удобные инструменты для покупателей, продавцов и администраторов, обеспечивая бесшовный процесс торговли онлайн.

🎯 Для кого этот проект?

  • 👥 Покупатели — удобный поиск товаров, корзина покупок, отслеживание заказов
  • 🏪 Продавцы — управление магазином, импорт каталога, мониторинг продаж
  • 👨‍💼 Менеджеры — полный контроль над системой, аналитика, управление заказами

✨ Основные возможности

Для покупателей

  • 🔐 Регистрация и аутентификация через JWT токены
  • 🔍 Умный поиск товаров с фильтрацией и сортировкой
  • 🛒 Корзина покупок с возможностью управления
  • 💳 Оформление заказов с применением скидочных купонов
  • 📧 Email-уведомления о статусе заказа с PDF-отчетами
  • 📱 Управление профилем и контактными данными

Для продавцов

  • 🏪 Создание и управление магазином
  • 📦 Импорт каталога товаров из YAML-файлов
  • 📊 Мониторинг продаж и заказов
  • ⚙️ Управление статусом магазина
  • 🎯 Просмотр активного каталога

Для менеджеров

  • 🎛️ Административная панель с расширенными возможностями
  • 📈 Управление заказами и их статусами
  • 🎫 Система скидочных купонов
  • 📊 Экспорт данных в формате CSV
  • 👥 Управление пользователями и магазинами

Технические особенности

  • Кэширование для оптимизации производительности
  • 🔄 Асинхронная обработка тяжелых задач через Celery
  • 🚦 Throttling для защиты от злоупотреблений
  • 📄 Пагинация для больших объемов данных
  • 📚 Swagger документация для разработчиков
  • 🧪 Покрытие тестами более 80%

🛠️ Технологический стек

Backend

  • 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)

DevOps

  • Containerization: Docker + Docker Compose
  • Testing: pytest + pytest-django + coverage
  • Code Quality: Model-bakery для фикстур

Ключевые библиотеки

  • djangorestframework — REST API
  • celery — асинхронные задачи
  • redis — кэширование
  • psycopg2-binary — PostgreSQL адаптер
  • pillow — обработка изображений
  • reportlab / weasyprint — генерация PDF

🚀 Быстрый старт

Требования

  • Docker 24.0+
  • Docker Compose 2.20+

Установка

  1. Клонируйте репозиторий
git clone <repository-url>
cd RetailProject
  1. Создайте файл .env
cp .env.example .env
# Отредактируйте .env с вашими настройками
  1. Запустите проект
docker-compose up -d
  1. Примените миграции
docker-compose exec web python manage.py migrate
  1. Создайте суперпользователя
docker-compose exec web python manage.py createsuperuser
  1. Готово! 🎉

📚 Документация

Подробная документация доступна в файле DOCUMENTATION.md, включая:

  • 🏗️ Архитектура системы
  • 📥 Детальные инструкции по установке
  • 🔧 Конфигурация и настройка
  • 💻 Примеры использования API
  • 🐛 Решение проблем

🌐 Основные API endpoints

Аутентификация

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 -v

📁 Структура проекта

RetailProject/
├── 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 приветствуются! Пожалуйста:

  1. Форкните репозиторий
  2. Создайте feature branch (git checkout -b feature/AmazingFeature)
  3. Закоммитьте изменения (git commit -m 'Add some AmazingFeature')
  4. Запушьте в branch (git push origin feature/AmazingFeature)
  5. Откройте Pull Request

👨‍💻 Автор

InnCent

About

Online Market is a REST API Application for sellers and buyers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages