Приложение «Продуктовый помощник»: сайт, на котором пользователи могут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других пользователей. Сервис «Список покупок» позволяет пользователям создавать список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.
Для бэкенда используется Django, api написана помощью фреймворка Django REST Framework. Для основных действий по аутентификации используется библиотека djoser, таких как регистрация, вход/выход в систему, сброс пароля и др.
После пуша в main запускается Workflow: Проходят тесты >>> Обновляются образы на Docker Hub >>> Деплой на сервер.
Фронтенд - одностраничное приложение на фреймворке React, которое взаимодействует с API через удобный пользовательский интерфейс.
- Проект работает с СУБД PostgreSQL.
- Проект запущен на сервере в Яндекс.Облаке в Docker контейнера Контейнеры с проектом обновляется через Docker Hub.
- В nginx настроена раздача статики, остальные запросы переадресуются в Gunicorn.
- Данные сохраняются в volumes.
✅ Python ✅ Django ✅ Django REST framework ✅ Postgres ✅ Docker ✅ Github Workflow ✅ Nginx
Создайте в директории infra .env файл с параметрами:
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД (установите свой)
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
ALLOWED_HOSTS=localhost #Ваши хосты
SECRET_KEY=KEY # ваш ключ
Установите и настройте Doсker. Собрать контейнеры можно автоматическом режиме для этого достаточно клонировать только папку infra и заменив в файле docker-compose.yaml:
◾ Запустите docker-compose:
docker-compose up -d --build
В соберите файлы статики, и запустите миграции командами:
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py collectstatic --no-input
◾ Создать суперпользователя можно командой:
docker-compose exec web python manage.py createsuperuser
◾ Остановить:
docker-compose down -v
Список доступных эндпоинтов в проекте.
Действия со значком 🔐 доступны только для авторизованных пользователей с помощью токена.
🔷 api/users/
Поддерживаемые методы: GET | POST
- Список пользователей
- Регистрация пользователя
🔷 api/users/{id}/
Поддерживаемые методы: GET
- Профиль пользователя 🔐
🔷 api/users/me/
Поддерживаемые методы: GET
- Текущий пользователь
🔷 api/users/set_password/
Поддерживаемые методы: POST
- Изменение пароля
🔷 api/auth/token/login/
Поддерживаемые методы: POST
- Получить токен авторизации
🔷 api/auth/token/login/
Поддерживаемые методы: POST
- Удаление токена
🔷 api/tags/
Поддерживаемые методы: GET
- Список тегов
🔷 api/tags/{id}/
Поддерживаемые методы: GET
- Получение тега
🔷 api/recipes/
Поддерживаемые методы: GET | POST
- Список рецептов
- Создание рецепта 🔐
🔷 api/recipes/{id}/
Поддерживаемые методы: GET | PATCH | DEL
- Получение рецепта
- Обновление рецепта 🔐
- Удаление рецепта 🔐
🔷 api/recipes/download_shopping_cart/
Поддерживаемые методы: GET
- Скачать список покупок 🔐
🔷 api/recipes/{id}/shopping_cart/
Поддерживаемые методы: POST | DEL
- Добавить рецепт в список покупок 🔐
- Удалить рецепт из списка покупок 🔐
🔷 api/recipes/{id}/favorite/
Поддерживаемые методы: POST | DEL
- Добавить рецепт в избранное 🔐
- Удалить рецепт из избранного 🔐
🔷 api/users/subscriptions/
Поддерживаемые методы: GET
- Подписки текущий пользователя
🔷 api/recipes/{id}/favorite/
Поддерживаемые методы: POST | DEL
- Подписаться на пользователя 🔐
- Отписаться от пользователя 🔐
🔷 api/recipes/{id}/favorite/
Поддерживаемые методы: GET
- Список ингредиентов 🔐
🔷 api/recipes/{id}/favorite/
Поддерживаемые методы: GET
- Подписаться на пользователя
- Получение ингредиента
Бэк - Александр Телепин
Фронт - ЯПрактикум