Проект реализован на Django
и DjangoRestFramework
, доступен по адресу.
Документация доступна по адресу.
Login: [email protected] Password: Qqwerty321
Дипломный проект курса Backend-разработки Яндекс.Практикум.
Проект представляет собой сайт-сервис для публикации рецептов различных блюд.
- Публикация собственного рецепта
- Добавление другого автора в подписки, что позволяет следить за его рецептами
- Добавление рецептов в избранное
- Добавление рецептов в корзину, а также возможность скачать список продуктов-ингредиентов и их количества
- Проект собирается из образов docker;
- Frontend предоставлен командой Яндекс.Практикум;
- Автором подготовлен Backend;
- База данных - postgress.
- Связь backend - frontend реализована через nginx+gunicorn.
- Образы foodgram-frontend и foodgram-backend запушены на DockerHub;
- Реализован action workflow, а автоматическим деплоем на удалённый сервер, осуществлением необходимых миграций и финальным уведомлением в Telegram.
Отображает список всех рецептов опубликованных в сервисе отсортированных по дате публикации, по 6 на страницу, от новых к старым.
Отображение имя пользователя, все опубликованные им рецепты, а также включает возможность подписаться на него.
Отображает полное описание рецепта, его изображение, все его ингредиенты. Включает в себя возможность добавить рецепт в избранное и/или добавить рецепт в корзину, а так же возможно перейти к редактированию рецепта, если пользовать является его автором.
Отображает список авторов на которых подписан пользователь, а также список их рецептов с краткой информацией. Возможно перейти на страницу автора или отписаться от него, перейти к конкретному рецепту.
Отображает список рецептов добавленных пользователем и краткую информацию о них. Возможно убрать рецепт из избранного, а также добавить или убрать рецепт из корзины(списка покупок).
Отображает список рецептов с краткой информацией. Возможно удалить рецепт из списка, а также скачать текстовый файл-список ингредиентов по добавленным в список рецептам. Список агрегированный, что удобно для того, чтобы использовать его для покупки продуктов перед готовкой.
На главной странице и странице избранного доступна фильтрация по тегам, которыми помечаются рецепты.
Для запуска проекта необходимо:
- Склонировать проект из репозитория:
$ git clone https://github.com/dmay92/foodgram-project-react.git
-
Выполните вход на удаленный сервер
-
Установите DOCKER на сервер:
apt install docker.io
- Установить docker-compose на сервер:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
- Отредактируйте конфигурацию сервера NGNIX:
Локально изменить файл ..infra/nginx.conf - заменить данные в строке server_name на IP-адрес удаленного сервера
- Создать переменные окружения (указаны в файле ../infra/env.sample) и добавить их в Secrets GitHub Actions
Полный необходимый список полей в Secrets GitHub Actions
- SECRET_KEY - секретный ключ django проекто из settings.py
- ENGINE - движок бд (postgresql) - django.db.backends.postgresql
- DB_NAME - имя бд
- POSTGRES_USER - логин для подключения к бд
- POSTGRES_PASSWORD - пароль для подключения к бд
- DB_HOST - название сервиса (контейнера)
- DB_PORT - порт для подключения к бд
- HOST - публичный ip вашего сервера
- USER - ваш пользователь на сервере
- SSH_KEY - ваш ssh ключ для подключения к серверу
- PASSPHRASE - ваш пароль для подтверждения ssh ключа
- DOCKER_USERNAME - имя пользователя на Dockerhub
- DOCKER_PASSWORD - пароль пользователя на Dockerhub
- TELEGRAM_TO - id пользователя в telegram куда должно отправляться уведопление об успешном выполнении Action на github
- TELEGRAM_TOKEN - токен бота в telegram, от которого будет отправляться уведомление
Для администрирования проекта на сервере необходимо создать суперпользователя
sudo docker-compose exec backend python manage.py createsuperuser
Админка доступна по адресу - http://ip_вашего_сервера/admin
Загрузка подготовленного списка ингредиентов для работы проекта
sudo docker-compose exec backend python manage.py load_ingredients
Майоров Дмитрий Антонович
Студент Яндекс.Практикум
51-я когорта
Python Backend-разработка
Email - [email protected]
Telegram - @dmayd92