Coder Social home page Coder Social logo

scorcer777 / recipe-share Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 658 KB

Сервис для размещения и просмотра рецептов, построен на взаимодействии React JS и DRF.

Home Page: http://blackwaterpark.ddns.net

Dockerfile 0.30% HTML 1.38% CSS 15.45% JavaScript 56.08% Shell 1.13% Python 25.68%
docker gitactions-workflow postgresql django-rest-framework reactjs python3

recipe-share's Introduction

Описание

recipe-share - это онлайн-платформа для обмена рецептами приготовления различных блюд. Пользователи могут создавать свои рецепты, просматривать рецепты других пользователей, а также добавлять их в "Избранное" или "Список покупок". Более 2000 ингридиентов с соответствующими единицами измерения уже предзагружено и доступно для выбора при создании рецепта. Присутствует также возможность добавить изображение блюда. Полезная функция "Список покупок" позволяет, добавив в корзину несколько рецептов, скачать результирующий список ингридиентов, в котором количества одинаковых ингридиентов суммируются. Удобдно для похода в магазин.

Запуск проекта локально.

1. Клонировать репозиторий командой в терминале Git Bash:

git clone [email protected]:Scorcer777/foodgram-project-react.git

2. Создать файл с переменными окружения в головной директории проекта:

touch .env

Скопировать в файл следующее содержимое:

DEBUG=False
DB_NAME=postgres
DB_ENGINE=django.db.backends.postgresql
POSTGRES_USER=postgres
POSTGRES_PASSWORD=123
DB_HOST=db
DB_PORT=5432
SECRET_KEY=<change_me>
ALLOWED_HOSTS=130.193.42.123,127.0.0.1,localhost,blackwaterpark.ddns.net
[email protected]
DJANGO_SUPERUSER_USERNAME=NoTiltToday
DJANGO_SUPERUSER_PASSWORD=Scorcer777

3. Установить приложение Docker Desktop со страндарстными настройками.

4. Собрать контейнеры. Находясь в директории с файлом docker-compose.yml ввести в терминале команду:

docker compose up

5. Миграции, загрузка тестовых пользователей, ингридиентов и тегов произойдут автоматически.

6. Открыть в браузере URL http://localhost/ для работы с сайтом или запустить программу Postman(или аналогичную для работы с API) для выполнения запросов.

Алгоритм регистрации пользователей

  1. Пользователь отправляет POST-запрос на добавление нового пользователя на эндпоинт localhost/api/users/ со следующими обязательными параметрами:
{
    "email": "[email protected]",
    "username": "vasya.pupkin",
    "first_name": "Вася",
    "last_name": "Пупкин",
    "password": "Qwerty123"
}
  1. Для получения auth token пользователь отправляет POST-запрос с параметрами username и passworn на эндпоинт /api/auth/token/login/:
{
    "email": "[email protected]",
    "password": "Qwerty123"
}
  1. Далее, при выполнении запросов через Postman, требующих аутентификации пользователя, необходимо указываеть в Headers параметр Autorization со значением Token <код полученного auth token>.

Пользовательские роли

Аноним — может просматривать описания рецептов, просматривать страницы пользователей. Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать и редактировать свои рецепты, добавлять любые рецепты их в избранное, подписываться на пользователей и скачивать свой "Список покупок". Эта роль присваивается по умолчанию каждому новому пользователю. Суперюзер Django — обладет правами администратора (admin), полные права на управление всем контентом проекта.

Базовые запросы к API c помощью POSTMAN(или аналогичной программы для работы с API):

  1. GET localhost/api/users/ - получить список всех пользователей.
  2. GET localhost/api/users/id(целое число)/ - получить профиль пользователя.
  3. POST localhost/api/users/ - зарегистрировать нового пользователя. Содержимое(обязательные поля)
{
    "email": "[email protected]",
    "username": "vasya.pupkin",
    "first_name": "Вася",
    "last_name": "Пупкин",
    "password": "Qwerty123"
}
  1. POST http://localhost/api/auth/token/login/ - получить токен авторизации. Содержимое(обязательные поля)
{
    "email": "[email protected]",
    "password": "Qwerty123"
}
  1. POST localhost/api/users/id(целое число)/subscribe/ - подписаться на пользователя.
  2. GET localhost/api/recipes/ - получить список всех рецептов.
  3. GET localhost/api/recipes/id(целое число)/ - получить рецепт.
  4. POST localhost/api/recipes/ (доступно только авторизованным пользователям.) Содержимое(обязательные поля)
{
    "ingredients": [
{
    "id": 1123,
    "amount": 10
}
    ],
    "tags": [
    1,
    2
    ],
    "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAgMAAABieywaAAAACVBMVEUAAAD///9fX1/S0ecCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNoAAAAggCByxOyYQAAAABJRU5ErkJggg==",
    "name": "string",
    "text": "string",
    "cooking_time": 1
}
  1. POST http://localhost/api/recipes/id(целое число)/favorite/ - добавление рецепта в Избранное.
  2. POST http://localhost/api/recipes/id(целое число)/shopping_cart/ - добавление рецепта в Список покупок.
  3. GET http://localhost/api/recipes/download_shopping_cart/ - скачать список покупок в виде PDF или TXT файла.

recipe-share's People

Contributors

scorcer777 avatar

Watchers

 avatar

recipe-share's Issues

Фикс стилей отображения переноса текста рецепта.

Теперь при публикации рецепта авторские переносы в тексте отображаются при публикации и не сливаются в один монолитный текст. Добавлены стили в frontend/src/pages/single-card/description/styles.module.css и применены в frontend/src/pages/single-card/description/index.js

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.