Alexey-Bormotov / foodgram-project-react

Продуктовый помощник (Foodgram)

Home Page:https://github.com/Alexey-Bormotov/foodgram-project-react

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

foodgram_workflow

"Продуктовый помощник" (Foodgram)


1. Описание

Проект "Продуктовый помошник" (Foodgram) предоставляет пользователям следующие возможности:

  • регистрироваться
  • создавать свои рецепты и управлять ими (корректировать\удалять)
  • просматривать рецепты других пользователей
  • добавлять рецепты других пользователей в "Избранное" и в "Корзину"
  • подписываться на других пользователей
  • скачать список ингредиентов для рецептов, добавленных в "Корзину"

2. Установка Docker (на платформе Ubuntu)

Проект поставляется в четырех контейнерах Docker (db, frontend, backend, nginx).
Для запуска необходимо установить Docker и Docker Compose.
Подробнее об установке на других платформах можно узнать на официальном сайте.

Для начала необходимо скачать и выполнить официальный скрипт:

apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

При необходимости удалить старые версии Docker:

apt remove docker docker-engine docker.io containerd runc 

Установить пакеты для работы через протокол https:

apt update
apt install \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common -y 

Добавить ключ GPG для подтверждения подлинности в процессе установки:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Добавить репозиторий Docker в пакеты apt и обновить индекс пакетов:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
apt update

Установить Docker(CE) и Docker Compose:

apt install docker-ce docker-compose -y

Проверить что Docker работает можно командой:

systemctl status docker

Подробнее об установке можно узнать по ссылке.


3. База данных и переменные окружения

Проект использует базу данных PostgreSQL.
Для подключения и выполненя запросов к базе данных необходимо создать и заполнить файл ".env" с переменными окружения в папке "./infra/".

Шаблон для заполнения файла ".env":

DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
SECRET_KEY='Здесь указать секретный ключ'
ALLOWED_HOSTS='Здесь указать имя или IP хоста' (Для локального запуска - 127.0.0.1)

4. Команды для запуска

Перед запуском необходимо склонировать проект:

HTTPS: git clone https://github.com/DIABLik666/foodgram-project-react.git
SSH: git clone git@github.com:DIABLik666/foodgram-project-react.git

Cоздать и активировать виртуальное окружение:

python -m venv venv
Linux: source venv/bin/activate
Windows: source venv/Scripts/activate

И установить зависимости из файла requirements.txt:

python3 -m pip install --upgrade pip
pip install -r requirements.txt

Далее необходимо собрать образы для фронтенда и бэкенда.
Из папки "./backend/foodgram/" выполнить команду:

docker build -t diablik666/foodgram_backend .

Из папки "./frontend/" выполнить команду:

docker build -t diablik666/foodgram_frontend .

После создания образов можно создавать и запускать контейнеры.
Из папки "./infra/" выполнить команду:

docker-compose up -d

После успешного запуска контейнеров выполнить миграции:

docker-compose exec backend python manage.py migrate

Создать суперюзера (Администратора):

docker-compose exec backend python manage.py createsuperuser

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

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

Теперь доступность проекта можно проверить по адресу http://localhost/


5. Заполнение базы данных

С проектом поставляются данные об ингредиентах.
Заполнить базу данных ингредиентами можно выполнив следующую команду из папки "./infra/":

docker-compose exec backend python manage.py fill_ingredients_from_csv --path data/

Также необходимо заполнить базу данных тегами (или другими данными).
Для этого требуется войти в админ-зону проекта под логином и паролем администратора (пользователя, созданного командой createsuperuser).


6. Техническая информация

Стек технологий: Python 3, Django, Django Rest, React, Docker, PostgreSQL, nginx, gunicorn, Djoser.

Веб-сервер: nginx (контейнер nginx)
Frontend фреймворк: React (контейнер frontend)
Backend фреймворк: Django (контейнер backend)
API фреймворк: Django REST (контейнер backend)
База данных: PostgreSQL (контейнер db)

Веб-сервер nginx перенаправляет запросы клиентов к контейнерам frontend и backend, либо к хранилищам (volume) статики и файлов.
Контейнер nginx взаимодействует с контейнером backend через gunicorn.
Контейнер frontend взаимодействует с контейнером backend посредством API-запросов.


7. Об авторе

Бормотов Алексей Викторович
Python-разработчик (Backend)
Россия, г. Кемерово
E-mail: di-devil@yandex.ru
Telegram: @DIABLik666

About

Продуктовый помощник (Foodgram)

https://github.com/Alexey-Bormotov/foodgram-project-react


Languages

Language:JavaScript 56.5%Language:Python 26.8%Language:CSS 15.5%Language:HTML 1.0%Language:Dockerfile 0.2%