Skip to content

abyxez/foodgram-project-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Foodgram

Автор проекта - Константин Мельник.

Tecnhologies

  • Python 3.10
  • Django 4.2.4
  • Django REST framework 3.14
  • Nginx
  • Docker
  • Postgres

Проект развёрнут по адресу:

http://qwertyk200.ddns.net/ - ( подписка на поддержку истекает каждые 30 дней )

Документация api доступна по адресу:

http://qwertyk200.ddns.net/api/docs/

Проект Foodgram - это облачный сервис для кулинаров, где вы можете подписываться на других авторов, загружать свои рецепты, а также выводить списки ингредиентов на покупку в формате .txt. Сервис поддерживает /api/, например, с помощью Postman.

Локальный запуск проекта:

git clone git@github.com:abyxez/foodgram-project-react.git
cd foodgram-project-react/

Создать и активировать виртуальное окружение:

python3 -m venv venv

Linux/macOS:

source venv/bin/activate

Windows:

source venv/Scripts/activate
python3 -m pip install --upgrade pip

Установить зависимости из файла requirements:

pip install -r requirements.txt

Выполнить миграции:

python3 manage.py migrate

Запустить проект:

python3 manage.py runserver

Создать суперпользователя ( все поля обязательны, поэтому вместо почты можно подставить шаблон <some_letters>@a.ru )

python3 manage.py createsuperuser

Запуск и деплой приложения на сервере:

Установить на сервере docker и docker compose. Windows:

sudo apt install docker.io

Linux/macOS:

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

Перенести данные для docker compose из вашей локальной /.../infra/:

scp -r infra/* <server user>@<server IP>:/home/<server user>/foodgram-project-react/infra/

cd infra/

sudo docker compose up --build

Миграции и статика бэкенда:

sudo docker compose exec backend python3 manage.py migrate

sudo docker compose exec backend python3 manage.py collectstatic --no-input 

Создать пользователя и осуществить импорт CSV в Вашу БД:

sudo docker compose exec backend python3 manage.py createsuperuser

sudo docker compose exec backend python3 manage.py import

API сервис, и его эндпоинты ( можно воспользоваться Postman ):

/api/users/ Get-запрос на получение списка пользователей. POST-запрос – регистрация нового пользователя.

/api/users/{id} GET-запрос – персональная страница пользователя с указанным id.

/api/users/me/ GET-запрос – страница текущего пользователя. PATCH-запрос – редактирование собственной страницы. Доступно авторизированным пользователям.

/api/tags/ GET-запрос — получение списка всех тегов.

/api/tags/{id} GET-запрос — получение информации о теге о его id.

/api/ingredients/ GET-запрос – получение списка всех ингредиентов. Подключён поиск по частичному вхождению в начале названия ингредиента.

/api/ingredients/{id}/ GET-запрос — получение информации об ингредиенте по его id.

/api/recipes/ GET-запрос – получение списка всех рецептов. Возможен поиск рецептов по тегам и по id автора (доступно без токена). POST-запрос – добавление нового рецепта (доступно для авторизированных пользователей).

/api/recipes/?is_favorited=1 GET-запрос – получение списка всех рецептов, добавленных в избранное. Доступно для авторизированных пользователей.

/api/recipes/is_in_shopping_cart=1 GET-запрос – получение списка всех рецептов, добавленных в список покупок. Доступно для авторизированных пользователей.

/api/recipes/{id}/ GET-запрос – получение информации о рецепте по его id (доступно без токена). PATCH-запрос – изменение собственного рецепта (доступно для автора рецепта). DELETE-запрос – удаление собственного рецепта (доступно для автора рецепта).

/api/recipes/{id}/favorite/ POST-запрос – добавление нового рецепта в избранное. DELETE-запрос – удаление рецепта из избранного. Доступно для авторизированных пользователей.

/api/recipes/{id}/shopping_cart/ POST-запрос – добавление нового рецепта в список покупок. DELETE-запрос – удаление рецепта из списка покупок. Доступно для авторизированных пользователей.

/api/recipes/download_shopping_cart/ GET-запрос – получение текстового файла со списком покупок. Доступно для авторизированных пользователей.

/api/users/{id}/subscribe/ GET-запрос – подписка на пользователя с указанным id. POST-запрос – отписка от пользователя с указанным id. Доступно для авторизированных пользователей

/api/users/subscriptions/ GET-запрос – получение списка всех пользователей, на которых подписан текущий пользователь Доступно для авторизированных пользователей.