Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

example workflow

Описание:

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

Используемые технологии:

https://www.python.org/ https://www.djangoproject.com/ https://www.postgresql.org/ https://nginx.org/ru/ https://gunicorn.org/ https://www.docker.com/ https://github.com/features/actions https://cloud.yandex.ru/

Workflow:

  • tests - проверка кода на соответствие стандарту PEP8;
  • build_and_push_to_docker_hub - сборка и доставка докер-образа для контейнера web на Docker Hub;
  • deploy - автоматический деплой проекта на боевой сервер;
  • send_message - отправка уведомления в Telegram о том, что процесс деплоя успешно завершился.

Подготовьте сервер:

  1. Войдите на свой удаленный сервер в облаке.
  2. Остановите службу nginx:
sudo systemctl stop nginx 
  1. Установите docker:
sudo apt install docker.io 
  1. Установите docker-compose, с этим вам поможет официальная документация.
  2. Скопируйте файлы docker-compose.yaml и nginx.conf из вашего проекта на сервер в home/<ваш_username>/docker-compose.yaml и home/<ваш_username>/nginx.conf соответственно:
scp docker-compose.yaml <username>@<host>:/home/<username>/
scp default.conf <username>@<host>:/home/<username>/
  1. В репозитории на Гитхабе добавьте данные в Settings -> Secrets -> Actions -> New repository secret:
DOCKER_USERNAME - ваш username на dockerhub
DOCKER_PASSWORD - ваш пароль на dockerhub
USER - имя пользователя для подключения к серверу
HOST - IP-адрес вашего сервера
SSH_KEY - скопируйте приватный ключ с компьютера, имеющего доступ к боевому серверу (cat ~/.ssh/id_rsa)
PASSPHRASE - если при создании ssh-ключа вы использовали фразу-пароль, то сохраните её в эту переменную
DB_ENGINE - django.db.backends.postgresql
DB_NAME - postgres
POSTGRES_USER - postgres
POSTGRES_PASSWORD - postgres
DB_HOST - db
DB_PORT - 5432
TELEGRAM_TO - ID своего телеграм-аккаунта (узнать свой ID можно у бота @userinfobot)
TELEGRAM_TOKEN - токен вашего бота (получить токен можно у бота @BotFather)

После деплоя:

  1. Выполните миграции в контейнере backend:
docker-compose exec backend python manage.py migrate
  1. Создайте суперпользователя в контейнере backend:
docker-compose exec backend python manage.py createsuperuser
  1. Соберите статику в контейнере backend:
docker-compose exec backend python manage.py collectstatic --noinput
  1. Загрузите начальные данные из файлов csv в базу данных:
docker-compose exec backend python manage.py load_csv

Сайт

Сайт доступен по ссылке: http://foodgramproject.hopto.org/

Админка доступка по ссылке: http://foodgramproject.hopto.org/admin/

Документация доступка по ссылке: http://foodgramproject.hopto.org/api/docs/

user email password token superuser
admin super@user.ru admin v v
user1 normal@user1.ru foodgram1 v х
user2 normal@user2.ru foodgram2 х х

Список доступных роутов

Method Route Description
GET /api/users/ Список пользователей
POST /api/users/ Регистрация пользователя
GET /api/users/<id>/ Профиль пользователя
GET /api/users/me/ Текущий пользователь
POST /api/users/set_password/ Изменение пароля
POST /api/auth/token/login/ Получить токен авторизации
POST /api/auth/token/logout/ Удаление токена
GET /api/tags/ Cписок тегов
GET /api/tags/<id>/ Получение тега
GET /api/recipe/ Список рецептов
POST /api/recipe/ Создание рецепта
GET /api/recipe/<id>/ Получение рецепта
PATCH /api/recipe/<id>/ Обновление рецепта
DELETE /api/recipe/<id>/ Удаление рецепта
GET /api/recipes/download_shopping_cart/ Скачать список покупок
POST /api/recipes/<id>/shopping_cart/ Добавить рецепт в список покупок
POST /api/recipes/<id>/shopping_cart/ Удалить рецепт из списка покупок
POST /api/recipes/<id>/favorite/ Добавить рецепт в избранное
DELETE /api/recipes/<id>/favorite/ Удалить рецепт из избранного
GET /api/users/subscriptions/ Мои подписки
POST /api/users/<id>/subscribe/ Подписаться на пользователя
DELETE /api/users/<id>/subscribe/ Отписаться от пользователя
GET /api/ingredients/ Список ингредиентов
GET /api/ingredients/<id> Получение ингредиента

Автор проекта:

Моторин А.В.

В начало ☝️

About

Кулинарный блог

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages