Проект Foodgram продуктовый помощник - платформа для публикации рецептов.
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
- Склонировать репозиторий на локальную машину
git clone [email protected]:NikLukyan/foodgram-project-react.git
- В терминале из папки проекта перейти в папку infra
cd .\infra\
- Выполнить команду по созданию образов и запуску контейнеров
docker compose up --build
- Инициализация БД и статики в контейнере
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])