Skip to content

Repository files navigation

Master Foodgram workflow

Дипломный проект, выполненный в рамках учебного курса Яндекс.Практикум

О проекте

Проект представляет из себя небольшую социальную сеть, в которой пользователи могут делиться с другими пользователями рецептами на все случаи жизни. В проекте доступны следующие возможности:

  • Публикация рецептов с выбранными ингредиентами
  • Подписка на других пользователей
  • Добавление рецептов в избранное
  • Создание списка покупок
  • Загрузка списка покупок в виде текстового файла с перечислением необходимых ингредиентов для всех выбранных рецептов

Взаимодействие с бэкендом происходит на базе API. Для аутентификации используется токен. Предоставляет данные в формате JSON. Аутентифицированный пользователь может создавать и редактировать рецепты, подписываться на пользователей, добавлять рецепты в избранное и создавать список покупок. Неаутентифицированный пользователь имеет доступ только к GET запросам.

Стек использованных технологий

  • Python
  • Django
  • Django REST Framework
  • Djoser
  • React
  • Gunicorn
  • Nginx
  • PostgreSQL
  • Docker
  • CSS
  • HTML

Как развернуть проект локально

  1. Клонировать проект с помощью команды git clone
  2. Создать в папке с проектом виртуальное окружение с версией Python 3.7, 3.8 или 3.9
  3. Внести данные в файл переменных окружения (.env) в нижеизложенном формате
  4. Активировать виртуальное окружение
  5. Установить и настроить Docker Dekstop
  6. Находясь в папке проекта использовать команды:
    • pip install -r requirements.txt
    • docker-compose build -f docker-compose.production.yml
    • docker-compose up -f docker-compose.production.yml
  7. В отдельном терминале выполнить команды:
    • docker ps - для отображения запущенных контейнеров
    • docker exec -it container_id python manage.py migrate - в качестве container_id должен быть указан айди контейнера бэкенда
  8. Загрузить статику с помощью команды:
    • docker exec -it container_id python manage.py collectstatic
  9. Импортировать данные для моделей ингредиента и тэга с помощью команды:
    • docker exec -it container_id python manage.py csv_import - в качестве container_id должен быть указан айди контейнера бэкенда

Как развернуть проект на сервере

  1. Клонировать проект с помощью команды git clone
  2. Внести данные в файл переменных окружения (.env) в нижеизложенном формате на сервере в папке проекта
  3. Установить и настроить на сервере nginx, docker и сертификат https.
  4. Скопировать файл docker-compose.production.yml в корневую директорию проекта на сервере
  5. Добавить секреты в GitHub Actions в нижеизложенном формате
  6. Запушить репозиторий в свой аккаунт

Как настроить переменные окружения

POSTGRES_USER=имя пользователя
POSTGRES_PASSWORD=пароль пользователя
POSTGRES_DB=имя базы данных

DB_HOST=адрес, по которому Django будет соединяться с базой данных. При работе нескольких контейнеров в сети Docker network вместо адреса указывают имя контейнера, где запущен сервер БД
DB_PORT=порт, по которому Django будет обращаться к базе данных. 5432 — это порт по умолчанию для PostgreSQL

SECRET_KEY=большое случайное число, применяемое для защиты от CSRF
DEBUG=значение должно быть True, если необходимо запустить проект в режиме дебага
ALLOWED_HOSTS=список хостов/доменов, для которых может работать текущий сайт. Указывать без пробелов через запятую

USE_SQLITE=значение должно быть True, если необходимо запустить проект с БД SQLite. В противном случае будет использован PostgreSQL

Как настроить секреты Git Actions

DOCKER_USERNAME     логин пользователя в Docker
DOCKER_PASSWORD     пароль пользователя в Docker
DOCKER_NICKNAME     имя пользователя в Docker

HOST                IP-адрес сервера
USER                имя пользователя на сервере
SSH_KEY             приватный ssh-ключ
SSH_PASSPHRASE      пароль приватного ssh-ключа

Пример развёрнутого проекта

С развёрнутым проектом можно ознакомиться по ссылке Документация API находится по ссылке

Автор(-ы)

Владимир Минеев (https://github.com/Atrocraz)

About

Foodgram - проект социальной сети для любителей готовить и делиться рецептами.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages