Skip to content

sasha0090/foodgram-project-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FoodGram - лучший продуктовый помощник ( ͡° ͜ʖ ͡°)

foodgram workflow License: MIT

Приложение «Продуктовый помощник»: сайт, на котором пользователи могут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других пользователей. Сервис «Список покупок» позволяет пользователям создавать список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.

http://51.250.111.41/recipes

Описание проекта

Для бэкенда используется 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

Установите и настройте 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

  • Подписаться на пользователя
  • Получение ингредиента

 

Авторы

Бэк - Александр Телепин

Фронт - ЯПрактикум

About

Финальный проект модуля Django

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published