Skip to content

AntonVagabond/online_store

Repository files navigation

Online Store

Static Badge Static Badge Static Badge Static Badge Static Badge
Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge

Language: Русский, English 🌍

📃 Содержание

  1. ✏️ Описание проекта
  2. 📱 Технологии проекта
  3. 📚 Используемые зависимости
  4. 📈 Связи между таблицами
  5. 📽️ Пример работы
  6. 🔧 Особенности проекта
  7. 🔌 Установка и запуск
  8. 📗 Документация API
  9. 🔐 Лицензия
  10. 🧙‍♂️ Авторы

✏️ Описание проекта

Проект на Django Rest Framework, предназначенный показать взаимодействия "Онлайн Магазина":

Покупателем, Менеджером / Админом, Поставщиком и Курьером.

📋 Задачи

Проект был разработан с целью изучения Django Rest Framework.
Были изучены такие темы, как:

  • Паттерны MVC, MVP. ✅
  • Аутентификация JWT. ✅
  • Аутентификация sessions. ✅
  • Интеграция. ✅
  • Регистрация по SMTP-протоколу. ✅
  • Регистрация, авторизация с помощью Djoser. ✅
  • Оптимизация с помощью подключения фоновых задач. ✅
  • Оптимизация с помощью Кэша. ✅
  • Работа брокеров очередей (Redis, RabbitMQ, Kafka). ✅
  • Разница между RabbitMQ и Kafka, плюсы и минусы их использования. ✅
  • Работа с платежной системой Yookassa. ✅
  • Применение webhook-а. ✅

📟 Функциональные возможности

Примерный список конечных точек и их возможности.

📱 Технологии проекта

  • Схема - Spectacular.
  • Регистрация - SMTP.
  • Отправка сообщений - Djoser.
  • Отслеживание ошибок - Sentry.
  • Проверка адреса через - Google Maps. (в разработке)
  • Резервная копия Базы Данных - CeleryBeat.
  • Кэширование и База Данных - Redis.
  • Фоновые задачи - Celery.
  • Брокер очередей - RabbitMQ.
  • Платежная система - Yookassa.
  • Подтверждение платежа - Webhook.

📚 Используемые зависимости

  • Python 3.11
  • Django 4.2.7
  • djangorestframework 3.14.0
  • djangorestframework-simplejwt 5.3.0
  • drf-spectacular 0.26.5
  • djoser 2.2.2
  • psycopg2 2.9.9
  • redis 5.0.1
  • rabbitmq-server 0.0.1
  • celery 5.3.6
  • django-celery-beat 2.5.0
  • sentry-sdk 1.38.0
  • yookassa 3.0.1

📈 Связи между таблицами

img.png

📽️ Пример работы.

  1. Пример работы копирования Базы Данных. Скачать видео в лучшем качестве. copy_bd

  1. Пример работы Оформления заказа и его оплата в Yookassa. Скачать видео в лучшем качестве. pay_yookassa

🔧 Особенности проекта

Warning

Если у вас возникают ошибки при запуске проекта, пару рекомендаций ниже могут вам помочь!

  1. При запуске проекта у вас возникает ошибка. Эта ссылка может помочь вам.
  2. У вас возникает ошибка в логировании при входе в документацию. Эта ссылка может помочь вам.
  • Этот проект начинал создаваться без знания того, как более грамотно писать REST API и
    как правильно реализовывать сам интернет магазин. По этой причине могут быть какие-то недочеты.

  • Почему в этом проекте нет микросервисов? Про микросервисы на тот момент я слышал, но как реализовать их не понимал.
    По этой причине этот проект имеет только один сервис.

  • Так же, если вы будете запускать через docker, вам нужно будет, доделать настройку
    celery(откатить на более низкую версию) либо в rabbitmq дописать конфиг. По какой-то
    одной из этих причин в docker не хочет работать celery и выскакивают предупреждения в rabbitmq.

  • Для более удобного использования проекта:
    Если хотите, чтобы ваш проект запускался с кнопки Run (Shift+F10) и применялся Debug (Shift+F9) зайдите по этой ссылке

🔌 Установка и запуск

Warning

Если на вашем компьютере есть всё нижеперечисленное, то можете пропустить это предупреждение.

  • Может понадобиться регистрация в Sentry.
  • Может понадобиться регистрация в Yookassa для тестирования платежа.

📔 Установка проекта в IDE

  • Клонирование репозитория:
git clone https://github.com/AntonVagabond/online_store.git
  • Создание виртуального окружения и установка зависимостей:
python3.11 -m venv env
source env/bin/activate
pip install -r requirements.txt
  • Создание .env на основе .env.example
SECRET_KEY=
DEBUG=
ALLOWED_HOSTS=

PG_DATABASE=
PG_USER=
PG_PASSWORD=
DB_HOST=
DB_PORT=

SENTRY_DSN=

EMAIL_HOST=
EMAIL_PORT=
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
EMAIL_USE_TLS=

REDIS_HOST=
REDIS_PORT=

RABBIT_HOST=
RABBIT_PORT=

CELERY_TASK_TRACK_STARTED=
ACCEPT_CONTENT=
RESULT_SERIALIZER=
TASK_SERIALIZER=
TIMEZONE=

YOOKASSA_SHOP_ID=
YOOKASSA_SECRET_KEY=
YOOKASSA_RETURN_URL=

STATIC_FILES=/path/to/static/
MEDIA_FILES=/path/to/media/

🐳 Установка проекта в Docker

  • Билд проекта:
docker-compose up -d --build
  • Создание миграций:
docker exec web python manage.py makemigrations
  • Применение миграций:
docker exec web python manage.py migrate
  • Инициализация проекта:
docker-compose exec make initial
  • Добавление superuser-а:
docker-compose exec web python manage.py createsuperuser

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

Документация по API доступна по /api/v1.
Краткий показ документации: swagger

🔐 Лицензия

Подробности см. в файле LICENSE.

🧙‍♂️ Авторы