Cайт Foodhelper («Помощник подбора продуктов»).
На этом сервисе пользователи смогут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а перед походом в магазин скачивать сводный список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.
- Создание пользователей сайта;
- Просмотр списка рецептов;
- Создание, удаление и редактировани рецептов;
- Добавление рецептов в избранное;
- Добавления рецептов в список покупок;
- Возможность подписки на других авторов;
- Получение списка необходимых к покупке ингредиентов в виде txt-файла.
- Python 3.9
- Django 3.2
- Django Rest Framework 3.14
- Gunicorn
- PostgreSQL
Схема API - Это схема API проекта.
Для запуска проекта на локальной машине у вас должен быть установлен Docker.
- Устанавливаем Docker и Docker compose:
sudo apt install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Устанавливаем разрешение для docker compose
sudo chmod +x /usr/local/bin/docker-compose
- Клонируйте репозиторий:
git clone [email protected]:MartiAndrew/foodgram-project-react.git
- Создайте .env файл в корне проекта. Его содержание в файле env.example, который находится в корне проекта.
Все последующие команды выполняются с правами суперпользователя
- Выполните команду:
docker compose up -d --build
- Соберите статику:
docker compose exec backend python manage.py collectstatic --no-input
- Создайте файлы миграций:
docker compose exec backend python manage.py makemigrations
- Примените миграции:
docker compose exec backend python manage.py migrate
- Создайте суперпользователя Django:
docker compose exec backend python manage.py createsuperuser
- Для загрузки данных из csv файлов:
docker compose exec backend python manage.py import_csv
- Клонируйте репозиторий:
git clone [email protected]:MartiAndrew/foodgram-project-react.git
- Соединяемся с сервером:
ssh -i ~/.ssh/<путь до вашего закрытого ключа> <имя пользователя на сервере>@<ip-сервера>
- Устанавливаем Docker и Docker compose:
sudo apt install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Устанавливаем разрешение для docker compose
sudo chmod +x /usr/local/bin/docker-compose
- Создаём домашнюю директорию проекта. Далее создаём .env файл в корне проекта. Его содержание в файле env.example, который находится в корне проекта.
mkdir foodhelper && cd foodhelper/
touch .env
- находясь на локальном компьютере в корневой директории скаченного проекта зайдите в папку infra и выполните команду копирования её содержимого
scp -i ~/.ssh/<путь до вашего закрытого ключа> . <имя пользователя на сервере>@<ip-сервера>:/home/yc-user/foodhelper/infra/
- Заходим снова на сервер, как показано ранее. И выполняем команду запуска docker-compose:
cd foodhelper/infra/ && sudo docker-compose up -d
- Соберите статику:
docker compose exec backend python manage.py collectstatic --no-input
- Создайте файлы миграций:
docker compose exec backend python manage.py makemigrations
- Примените миграции:
docker compose exec backend python manage.py migrate
- Создайте суперпользователя Django:
docker compose exec backend python manage.py createsuperuser
- Для загрузки данных из csv файлов:
docker compose exec backend python manage.py import_csv
Выше описанная процедура может быть автоматизирована и произведено развертывание и управление процессами CI/CD с помощью workflow main.yml. В конкретном случае запуск происходит автоматически при отправке проекта на сервер разработчика (git push). Предварительно на github action создаются секретные ключи(DOCKER_PASSWORD, DOCKER_USERNAME, (HOST, SSH_KEY, SSH_PASSPHRASE, USER) - данные для аутентификации на виртуальной машине)
- Пример главной страницы с рецептами - Страница с рецептами доступна для чтения.
- Пример страницы с подписками - Страница с подписками на авторов рецептов.
Проект доступен по адресу - Главная страница проекта.
Над проектом работал: Мишков Андрей