/shop-project

Pet-проект небольшого маркетплейса на Django

Primary LanguageCSS

💩 Интернет-маркетплейс на Django / Next.js

Pet-проект. Создается в целях более лучшего изучения Python / JavaScript :shipit:

📐 Стек проекта:

  • Python 3.11 (Django, Django REST framework, Celery)
  • HTML5, CSS (Bootstrap 5, UIkit), JS (Next.js, React, jQuery)
  • NGNIX, Gunicorn
  • Redis, PostgreSQL

🔧 Запуск проекта

  • Создаём виртуальное окружение Python и активируем его

    $ python -m venv venv
    $ venv\Scripts\activate.bat - для Windows / source venv/bin/activate - для Linux и MacOS
    
  • Устанавливаем зависимости проекта

    $ pip install -r requirements.txt
    
  • Создаем кеш-таблицу в бд (нужна для хранения настроек проекта)

    $ python manage.py createcachetable
    
  • Выполняем миграции бд

    $ python manage.py migrate --noinput
    
  • Обычный запуск

    $ python manage.py runserver
    
  • Запуск при помощи Gunicorn

    $ gunicorn config.wsgi:application --bind 0.0.0.0:8000
    

И определенно стоит настроить .env файл перед запуском

🐳 Работа с Docker

  • Собрать проект (prod.env или dev.env)

    $ docker-compose -f docker-compose.yml up -d --build
    
  • Удаление контейнеров

    $ docker-compose down -v
    

🔐 Настройка входа в админку

$ python manage.py createsuperuser --username admin@email.com --email admin@email.com
$ docker-compose -f docker-compose.yml exec web python manage.py createsuperuser --username admin@email.com --email admin@email.com

💰 Оплата

Реализована при помощи QIWI API, проверка оплаты происходит при помощи задач Celery по расписанию.

Требуется обязательно установить приватный ключ QIWI в админке или settings.py / .env файлах. Получить можно тут: https://qiwi.com/p2p-admin/api

  • Команды Celery

      Windows:
    $ celery -A config beat --loglevel=info
    $ celery -A config worker --pool=solo --loglevel=info
    
      Linux:
    $ celery -A config worker --beat --loglevel=info
    

😴 REST API

Полный REST API, пригодится когда буду заниматься выделенным фронтом. Для доступа к некоторым разделам API нужны права администратора. API swagger: http://.../swagger

✒️ Авто-заполнение магазина для быстрого тестирования

POST запрос по адресу http://.../api/db_auto_fill с содержимым в формате:

{
  model: "Categories",
  amount: 7
}

Необходимы права администратора

📷 Скрины проекта

Изображение №1 Изображение №2 Изображение №3 Изображение №4 Изображение №5 Изображение №6 Изображение №7 Изображение №8 Изображение №9