https://github.com/antonvagabond/online_store
The "Online Store" project, written in Django Rest Framework.
https://github.com/antonvagabond/online_store
celery celery-beat django django-project django-rest django-rest-framework djoser orm postgresql psycopg2 python python3 rabbitmq redis sentry smpt spectacular swagger webhook yookassa
Last synced: 29 days ago
JSON representation
The "Online Store" project, written in Django Rest Framework.
- Host: GitHub
- URL: https://github.com/antonvagabond/online_store
- Owner: AntonVagabond
- License: apache-2.0
- Created: 2023-11-28T05:33:22.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-03T17:03:57.000Z (about 1 year ago)
- Last Synced: 2025-04-04T05:51:13.001Z (about 2 months ago)
- Topics: celery, celery-beat, django, django-project, django-rest, django-rest-framework, djoser, orm, postgresql, psycopg2, python, python3, rabbitmq, redis, sentry, smpt, spectacular, swagger, webhook, yookassa
- Language: Python
- Homepage:
- Size: 42.1 MB
- Stars: 13
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# _Online Store_
[](https://www.python.org)
[](https://www.djangoproject.com)
[](https://www.django-rest-framework.org)
[](https://swagger.io)
[](https://www.postgresql.org)\
[](https://docs.celeryq.dev/en/stable/)
[](https://redis.io)
[](https://www.rabbitmq.com)
[](https://sentry.io)
[
](https://yookassa.ru)
[
](https://www.mango-office.ru/products/calltracking/for-marketing/osnovy/webhook-i-kak-ego-ispolzovat/)>_Language: [Русский](README.md), [English](docs/README.en.md)_ 🌍
### 📃 Содержание
1. ✏️ [Описание проекта](#project_desc)
- 📋 [Задачи](#goals)
- 📟 [Функциональные возможности](#func_abilities)
2. 📱 [Технологии проекта](#project_technologies)
3. 📚 [Используемые зависимости](#dependencies_used)
4. 📈 [Связи между таблицами](#table)
5. 📽️ [Пример работы](#example_work)
6. 🔧 [Особенности проекта](#project_features)
7. 🔌 [Установка и запуск](#installation_and_launch)
- 📔 [Установка проекта в IDE](#installation_ide)
- 🐳 [Установка проекта в Docker](#installation_docker)
8. 📗 [Документация API](#documentation_api)
9. 🔐 [Лицензия](#license)
10. 🧙♂️ [Авторы](#authors)
## ✏️ Описание проекта ##
Проект на Django Rest Framework, предназначенный показать взаимодействия
"**Онлайн Магазина**":
>_Покупателем_, _Менеджером_ / _Админом_, _Поставщиком_ и _Курьером_.
### 📋 Задачи ###
Проект был разработан с целью изучения Django Rest Framework.\
Были изучены такие темы, как:
- Паттерны _MVC_, _MVP_. ✅
- Аутентификация _JWT_. ✅
- Аутентификация _sessions_. ✅
- Интеграция. ✅
- Регистрация по _SMTP_-протоколу. ✅
- Регистрация, авторизация с помощью _Djoser_. ✅
- Оптимизация с помощью подключения _фоновых задач_. ✅
- Оптимизация с помощью _Кэша_. ✅
- Работа _брокеров очередей_ (Redis, RabbitMQ, Kafka). ✅
- Разница между _RabbitMQ_ и _Kafka_, плюсы и минусы их использования. ✅
- Работа с платежной системой _Yookassa_. ✅
- Применение _webhook-а_. ✅
### 📟 Функциональные возможности ###
Примерный список [конечных точек](docs/endpoints/Endpoints.md) и их возможности.
## 📱 Технологии проекта ##
- Схема - `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`
## 📈 Связи между таблицами ##

## 📽️ Пример работы. ##
1. Пример работы копирования **_Базы Данных_**. Скачать [видео](docs/videos/Postman_t9M2iW3Xku.mp4) в лучшем качестве.
---
2. Пример работы **_Оформления заказа и его оплата в Yookassa_**. Скачать [видео](docs/videos/pycharm64_Jr15ACpje5.mp4) в лучшем качестве.

## 🔧 Особенности проекта ##
>[!WARNING]
> Если у вас возникают ошибки при запуске проекта, пару рекомендаций ниже могут вам помочь!
>1. При запуске проекта у вас возникает ошибка. Эта [ссылка](docs/problems/root_project/RootProjectProblem.md) может помочь вам.
>2. У вас возникает ошибка в логировании при входе в документацию. Эта [ссылка](docs/problems/logging/LoggingProblem.md) может помочь вам.- Этот проект начинал создаваться без знания того, как более грамотно писать REST API и \
как правильно реализовывать сам интернет магазин. По этой причине могут быть какие-то недочеты.
- Почему в этом проекте нет микросервисов? Про микросервисы на тот момент я слышал, но как реализовать их не понимал.
По этой причине этот проект имеет только один сервис.
- Так же, если вы будете запускать через docker, вам нужно будет, доделать настройку \
_celery_(откатить на более низкую версию) либо в _rabbitmq_ дописать конфиг. По какой-то \
одной из этих причин в docker не хочет работать _celery_ и выскакивают предупреждения в _rabbitmq_.- Для более удобного использования проекта: \
Если хотите, чтобы ваш проект запускался с кнопки **Run** (_Shift+F10_) и применялся **Debug** (_Shift+F9_) зайдите по этой [ссылке](docs/configurations/Config.md)
## 🔌 Установка и запуск ##
> [!WARNING]
> Если на вашем компьютере **есть** всё нижеперечисленное, то можете _пропустить_ это предупреждение.
> - Может понадобиться регистрация в [Sentry](https://sentry.io).
> - Может понадобиться регистрация в [Yookassa](https://yookassa.ru/developers/payment-acceptance/testing-and-going-live/testing) для тестирования платежа.
### 📔 Установка проекта в IDE ##
- Клонирование репозитория:
```text
git clone https://github.com/AntonVagabond/online_store.git
```
- Создание виртуального окружения и установка зависимостей:
```text
python3.11 -m venv env
source env/bin/activate
pip install -r requirements.txt
```
- Создание `.env` на основе `.env.example`
```.env
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
docker-compose up -d --build
```
- Создание миграций:
```docker
docker exec web python manage.py makemigrations
```
- Применение миграций:
```docker
docker exec web python manage.py migrate
```
- Инициализация проекта:
```docker
docker-compose exec make initial
```
- Добавление superuser-а:
```
docker-compose exec web python manage.py createsuperuser
```
## 📗 Документация API ##
Документация по API доступна по `/api/v1`. \
Краткий показ документации:

## 🔐 Лицензия ##
Подробности см. в файле [LICENSE](LICENSE).
## 🧙♂️ Авторы
- [Акуев Антон Артурович](https://github.com/AntonVagabond)
- [Сыса Роман Алексеевич](https://github.com/menma331)