Skip to content

Сервис для публикации кулинарных рецептов с возможностью формирования списка продуктов для нужных рецептов.

Notifications You must be signed in to change notification settings

kireev20000/KirKir-Cooking-Book

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект Foodgram

Python Django Django REST Framework PostgreSQL Nginx gunicorn docker GitHub%20Actions

kirkir Cooking Book реализован для публикации рецептов. Авторизованные пользователи могут подписываться на понравившихся авторов, добавлять рецепты в избранное, в покупки, скачать список покупок ингредиентов для добавленных в покупки рецептов.

Что могут делать неавторизованные пользователи

  • Создать аккаунт.
  • Просматривать рецепты на главной.
  • Просматривать отдельные страницы рецептов.
  • Просматривать страницы пользователей.
  • Фильтровать рецепты по тегам.

Что могут делать авторизованные пользователи

  • Входить в систему под своим логином и паролем.
  • Выходить из системы (разлогиниваться).
  • Менять свой пароль.
  • Создавать/редактировать/удалять собственные рецепты
  • Просматривать рецепты на главной.
  • Просматривать страницы пользователей.
  • Просматривать отдельные страницы рецептов.
  • Фильтровать рецепты по тегам.
  • Работать с персональным списком избранного: добавлять в него рецепты или удалять их, просматривать свою страницу избранных рецептов.
  • Работать с персональным списком покупок: добавлять/удалять любые рецепты, выгружать файл с количеством необходимых ингредиентов для рецептов из списка покупок.
  • Подписываться на публикации авторов рецептов и отменять подписку, просматривать свою страницу подписок.

Что может делать администратор

Администратор обладает всеми правами авторизованного пользователя. Плюс к этому он может:

  • изменять пароль любого пользователя,
  • создавать/блокировать/удалять аккаунты пользователей,
  • редактировать/удалять любые рецепты,
  • добавлять/удалять/редактировать ингредиенты.
  • добавлять/удалять/редактировать теги. Все эти функции реализованы в стандартной админ-панели Django.

Подготовка и запуск проекта

Склонировать репозиторий на локальную машину:

git clone [email protected]:kireev20000/kirkir_cooking_book.git

- Установите и активируйте виртуальное окружение:

  • для MacOS
python3 -m venv venv
  • для Windows
python -m venv venv
source venv/bin/activate
source venv/Scripts/activate

- Установите зависимости из файла requirements.txt:

pip install -r requirements.txt

- Примените миграции:

python manage.py migrate

- В папке с файлом manage.py выполните команду для запуска локально:

python manage.py runserver

- Локально Документация доступна по адресу:

http://127.0.0.1/api/docs/

Собираем контейнерыы:

Из папки infra/ разверните контейнеры при помощи docker-compose:

docker-compose up -d --build

Выполните миграции:

docker-compose exec backend python manage.py migrate

Создайте суперпользователя:

winpty docker-compose exec backend python manage.py createsuperuser

Соберите статику:

docker-compose exec backend python manage.py collectstatic --no-input

Наполните базу данных ингредиентами и тегами. Выполняйте команду из дериктории где находится файл manage.py:

docker-compose exec backend python manage.py import_csv_data

Остановка проекта:

docker-compose down

Подготовка к запуску проекта на удаленном сервере

Cоздать и заполнить .env файл в директории infra

DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
TOKEN=252132607137
ALLOWED_HOSTS=*

Примеры запросов:

POST | Создание рецепта: http://127.0.0.1:8000/api/recipes/

Request:

{
  "ingredients": [
    {
      "id": 1123,
      "amount": 10
    }
  ],
  "tags": [
    1,
    2
  ],
  "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAgMAAABieywaAAAACVBMVEUAAAD///9fX1/S0ecCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNoAAAAggCByxOyYQAAAABJRU5ErkJggg==",
  "name": "string",
  "text": "string",
  "cooking_time": 1
}

Response:

{
  "id": 0,
  "tags": [
    {
      "id": 0,
      "name": "Завтрак",
      "color": "#E26C2D",
      "slug": "breakfast"
    }
  ],
  "author": {
    "email": "[email protected]",
    "id": 0,
    "username": "string",
    "first_name": "Вася",
    "last_name": "Пупкин",
    "is_subscribed": false
  },
  "ingredients": [
    {
      "id": 0,
      "name": "Картофель отварной",
      "measurement_unit": "г",
      "amount": 1
    }
  ],
  "is_favorited": true,
  "is_in_shopping_cart": true,
  "name": "string",
  "image": "http://foodgram.example.org/media/recipes/images/image.jpeg",
  "text": "string",
  "cooking_time": 1
}

POST | Подписаться на пользователя: http://127.0.0.1:8000/api/users/{id}/subscribe/

Response:

{
  "email": "[email protected]",
  "id": 0,
  "username": "string",
  "first_name": "Вася",
  "last_name": "Пупкин",
  "is_subscribed": true,
  "recipes": [
    {
      "id": 0,
      "name": "string",
      "image": "http://foodgram.example.org/media/recipes/images/image.jpeg",
      "cooking_time": 1
    }
  ],
  "recipes_count": 0
}

Об авторе

Киреев Александр Олегович
Python-разработчик (Backend)
E-mail: [email protected] Telegram: @kireev20000

About

Сервис для публикации кулинарных рецептов с возможностью формирования списка продуктов для нужных рецептов.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published