- ✏️ Описание проекта
- 📱 Технологии проекта
- 📚 Используемые зависимости
- 📈 Связи между таблицами
- 📽️ Пример работы
- 🔧 Особенности проекта
- 🔌 Установка и запуск
- 📗 Документация API
- 🔐 Лицензия
- 🧙♂️ Авторы
Проект на 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
- Пример работы копирования Базы Данных. Скачать видео в лучшем качестве.
- Пример работы Оформления заказа и его оплата в Yookassa. Скачать видео в лучшем качестве.
Warning
Если у вас возникают ошибки при запуске проекта, пару рекомендаций ниже могут вам помочь!
-
Этот проект начинал создаваться без знания того, как более грамотно писать REST API и
как правильно реализовывать сам интернет магазин. По этой причине могут быть какие-то недочеты. -
Почему в этом проекте нет микросервисов? Про микросервисы на тот момент я слышал, но как реализовать их не понимал.
По этой причине этот проект имеет только один сервис. -
Так же, если вы будете запускать через docker, вам нужно будет, доделать настройку
celery(откатить на более низкую версию) либо в rabbitmq дописать конфиг. По какой-то
одной из этих причин в docker не хочет работать celery и выскакивают предупреждения в rabbitmq. -
Для более удобного использования проекта:
Если хотите, чтобы ваш проект запускался с кнопки Run (Shift+F10) и применялся Debug (Shift+F9) зайдите по этой ссылке
Warning
Если на вашем компьютере есть всё нижеперечисленное, то можете пропустить это предупреждение.
- Клонирование репозитория:
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-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/v1
.
Краткий показ документации:
Подробности см. в файле LICENSE.