Skip to content

Онлайн-сервис кулинарных рецептов.

Notifications You must be signed in to change notification settings

alexpro2022/foodgram-React-DRF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Приложение Продуктовый помощник

status codecov

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

Оглавление

Технологии

Развернуть

Языки программирования, библиотеки и модули:

Python base64 csv os re shutil sys tempfile

Фреймворк, расширения и библиотеки:

Django Django REST Framework DJoser django-filter

База данных:

PostgreSQL

Тестирование:

Pytest Pytest-cov Coverage

CI/CD:

GitHub_Actions docker_hub docker_compose Nginx gunicorn Yandex.Cloud Telegram

⬆️Оглавление

Описание работы

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

⬆️Оглавление

Установка и запуск:

Удобно использовать принцип copy-paste - копировать команды из GitHub Readme и вставлять в командную строку Git Bash или IDE (например VSCode).

Предварительные условия:

Развернуть

Предполагается, что пользователь:

  • создал аккаунт DockerHub, если запуск будет производиться на удаленном сервере.
  • установил Docker и Docker Compose на локальной машине или на удаленном сервере, где проект будет запускаться в контейнерах. Проверить наличие можно выполнив команды:
    docker --version && docker-compose --version

Локальный запуск

!!! Для пользователей Windows обязательно выполнить команду: иначе файл start.sh при клонировании будет бракован:

git config --global core.autocrlf false
  1. Клонируйте репозиторий с GitHub и введите данные для переменных окружения (значения даны для примера, но их можно оставить):
git clone https://github.com/alexpro2022/foodgram-React-DRF.git && \
cd foodgram-React-DRF && \
cp env_example .env && \
nano .env
  1. Из корневой директории проекта выполните команду:
docker compose -f infra/local/docker-compose.yml up -d --build

Проект будет развернут в трех docker-контейнерах (db, web, nginx) по адресу http://localhost.

  1. Остановить docker и удалить контейнеры можно командой из корневой директории проекта:
docker compose -f infra/local/docker-compose.yml down

Если также необходимо удалить тома базы данных, статики и медиа:

docker compose -f infra/local/docker-compose.yml down -v

Запуск на удаленном сервере
  1. Сделайте форк в свой репозиторий.

  2. Создайте Actions.Secrets согласно списку ниже (значения указаны для примера) + переменные окружения из env_example файла:

PROJECT_NAME 
SECRET_KEY

CODECOV_TOKEN

DOCKERHUB_USERNAME
DOCKERHUB_PASSWORD

# Данные удаленного сервера и ssh-подключения:
HOST
USERNAME 
SSH_KEY 
PASSPHRASE

# Учетные данные Телеграм-бота для получения сообщения о успешном завершении workflow
TELEGRAM_USER_ID= 
TELEGRAM_BOT_TOKEN= 
  1. Запустите вручную workflow, чтобы автоматически развернуть проект в трех docker-контейнерах (db, web, nginx) на удаленном сервере.

При первом запуске будут автоматически произведены следующие действия:

  • выполнены миграции БД
  • БД заполнена начальными данными
  • создан суперюзер (пользователь с правами админа) с учетными данными из переменных окружения ADMIN_USERNAME, ADMIN_EMAIL, ADMIN_PASSWORD
  • собрана статика

Вход в админ-зону осуществляется по адресу: http://hostname/admin/ . Увидеть спецификацию API можно по адресу http://hostname/api/docs/ , где hostname:

  • localhost
  • IP-адрес удаленного сервера

Учетные данные тестовых аккаунтов для входа в приложение:

  • пароль - 111 (можно поменять для каждого пользователя, включая тестовых)
  • поле email:
    bingobongo@yamdb.fake
    capt_obvious@yamdb.fake
    faust@yamdb.fake
    reviewer@yamdb.fake
    angry@yamdb.fake

⬆️Оглавление

Удаление:

Для удаления проекта выполните команду:

cd .. && rm -fr foodgram-React-DRF

⬆️Оглавление

Автор

Проскуряков Алексей

  • написал backend по спецификации готового frontend.
  • дополнительно к ТЗ проекта написал 25 тестов (codecov 95%).

⬆️В начало