Skip to content

Проект Foodgram. Продуктовый помощник. Разработано: Python, DRF, API. Возможности: публикация рецептов, подписка на публикации других пользователей, добавление рецептов в Избранное, скачивание сводного списка выбранных продуктов (для приготовления всех выбранных блюд)

Notifications You must be signed in to change notification settings

NikLukyan/foodgram-project-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сайт "Продуктовый помощник"

Проект Foodgram продуктовый помощник - платформа для публикации рецептов.

Foodgram-project-react Imports: isort

Адрес развернутого приложения:

http://51.250.94.66/ (Приостановлено)

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

Проект Foodgram продуктовый помощник - платформа для публикации рецептов. Cайт, на котором пользователи будут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. Сервис «Список покупок» позволит пользователям создавать список продуктов, которые нужно купить для приготовления выбранных блюд.

  • Реализован бекенд.
  • Фронтенд - одностраничное приложение на фреймворке React, которое взаимодействовует с API через удобный пользовательский интерфейс (разработан Яндекс.Практикум).

Структура репозитория

  • В папке frontend находятся файлы, необходимые для сборки фронтенда приложения.
  • В папке infra — заготовка инфраструктуры проекта: конфигурационный файл nginx и docker-compose.yml.
  • В папке backend бэкенд продуктового помощника.
  • В папке data подготовлен список ингредиентов с единицами измерения. Список сохранён в форматах JSON и CSV. (Либо в файле фикстур)
  • В папке docs — файлы спецификации API.

Инфраструктура

  • Проект работает с СУБД PostgreSQL.
  • Проект запущен на сервере в трёх контейнерах: nginx, PostgreSQL и Django+Gunicorn. Контейнер с проектом обновляется на Docker Hub.
  • В nginx настроена раздача статики, остальные запросы переадресуются в Gunicorn.
  • Данные сохраняются в volumes.

Базовые модели проекта

Рецепт

  • Автор публикации (пользователь).
  • Название.
  • Картинка.
  • Текстовое описание.
  • Ингредиенты: продукты для приготовления блюда по рецепту. Множественное поле, выбор из предустановленного списка, с указанием количества и единицы измерения.
  • Тег (можно установить несколько тегов на один рецепт, выбор из предустановленных).
  • Время приготовления в минутах.

Тег

  • Название.
  • Цветовой HEX-код (например, #49B64E).
  • Slug.

Ингредиент

  • Название.
  • Количество.
  • Единицы измерения.

Сервисы и страницы проекта

Сервис "Список покупок"

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

Сценарий поведения пользователя: 1.Пользователь отмечает один или несколько рецептов кликом по кнопке «Добавить в покупки». 2.Пользователь переходит на страницу Список покупок, там доступны все добавленные в список рецепты. Пользователь нажимает кнопку Скачать список и получает файл с суммированным перечнем и количеством необходимых ингредиентов для всех рецептов, сохранённых в «Списке покупок». 3.При необходимости пользователь может удалить рецепт из списка покупок. Список покупок скачивается в формате .txt. При скачивании списка покупок ингредиенты в результирующем списке не дублируются; если в двух рецептах есть сахар (в одном рецепте 5 г, в другом — 10 г), то в списке должен быть один пункт: Сахар — 15 г.

В результате список покупок может выглядеть так:

  • Фарш (баранина и говядина) (г) — 600
  • Сыр плавленый (г) — 200
  • Лук репчатый (г) — 50
  • Картофель (г) — 1000

Инструкция по запуску проекта локально в контейнерах


  1. Склонировать репозиторий на локальную машину
git clone [email protected]:NikLukyan/foodgram-project-react.git
  1. В терминале из папки проекта перейти в папку infra
cd .\infra\
  1. Выполнить команду по созданию образов и запуску контейнеров
docker compose up --build  
  1. Инициализация БД и статики в контейнере
docker compose exec backend python manage.py migrate

Собираем статические файлы

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

Загружаем первоначальные данные(список ингредиентов и тегов) в БД при помощи фикстур

docker compose exec backend python manage.py loaddata --exclude auth.permission --exclude contenttypes fixtures.json

В фикстурах есть суперпользователь с почтой

Пароль

admin

Авторы

Никита Лукьянчук (8-918-261-01-04 [email protected])

About

Проект Foodgram. Продуктовый помощник. Разработано: Python, DRF, API. Возможности: публикация рецептов, подписка на публикации других пользователей, добавление рецептов в Избранное, скачивание сводного списка выбранных продуктов (для приготовления всех выбранных блюд)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published