GithubHelp home page GithubHelp logo

foodgram-project-react's Introduction

Проект продуктового помощника

Foodgram_Workflow

Python Django Django REST Framework PostgreSQL Nginx gunicorn docker GitHub%20Actions Yandex.Cloud

Описание:

Кулинарный онлайн-сервис и API для него. На этом сервисе пользователи смогут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а так же скачивать список продуктов, необходимых для приготовления выбранных блюд.

Сайт доступен по адресу http://foodgram-project.ddns.net/

Полная документация по API: http://foodgram-project.ddns.net/api/docs/

Доступ к админке

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

Функционал Неавторизованные пользователи Авторизованные пользователи Администратор
Доступна главная страница. ✔️ ✔️ ✔️
Доступна и работает форма авторизации ✔️ ✔️ ✔️
Доступна страница отдельного рецепта. ✔️ ✔️ ✔️
Доступна и работает форма регистрации. ✔️ ✔️ ✔️
Доступна страница «Мои подписки» ✔️ ✔️
Можно подписаться и отписаться на странице рецепта ✔️ ✔️
Можно подписаться и отписаться на странице автора ✔️ ✔️
При подписке рецепты автора добавляются на страницу «Мои подписки» и удаляются оттуда при отказе от подписки. ✔️ ✔️
Доступна страница «Избранное» ✔️ ✔️
На странице рецепта есть возможность добавить рецепт в список избранного и удалить его оттуда ✔️ ✔️
На любой странице со списком рецептов есть возможность добавить рецепт в список избранного и удалить его оттуда ✔️ ✔️
Доступна страница «Список покупок» ✔️ ✔️
На странице рецепта есть возможность добавить рецепт в список покупок и удалить его оттуда ✔️ ✔️
На любой странице со списком рецептов есть возможность добавить рецепт в список покупок и удалить его оттуда ✔️ ✔️
Есть возможность выгрузить файл (.txt) с перечнем и количеством необходимых ингредиентов для рецептов из «Списка покупок» ✔️ ✔️
Ингредиенты в выгружаемом списке не повторяются, корректно подсчитывается общее количество для каждого ингредиента ✔️ ✔️
Доступна страница «Создать рецепт» ✔️ ✔️
Есть возможность опубликовать свой рецепт ✔️ ✔️
Есть возможность отредактировать и сохранить изменения в своём рецепте ✔️ ✔️
Есть возможность удалить свой рецепт ✔️ ✔️
Доступна и работает форма изменения пароля ✔️ ✔️
Доступна возможность выйти из системы (разлогиниться) ✔️ ✔️
Доступна и работает система восстановления пароля. ✔️ ✔️
Изменять пароль любого пользователя. ✔️
Создавать/блокировать/удалять аккаунты пользователей. ✔️
Редактировать/удалять любые рецепты. ✔️
Добавлять/удалять/редактировать ингредиенты. ✔️
Добавлять/удалять/редактировать теги. ✔️

Админ-зона

1️⃣ Все модели доступны в админ-зоне, в том числе редактирование/удаление запискей.
2️⃣ Добавлена возможнсть блокирования пользователей. Заблокированные пользователя не имеют доступ к ресурсу.
3️⃣ На админ-странице рецепта отображается количество добавлений этого рецепта в избранное.
4️⃣ Для модели ингредиентов включена фильтрация по названию.

Создание пользователя администратором

Пользователя может создать администратор — через админ-зону или через POST-запрос на специальный эндпоинт api/users/ Получение токена реализовано через отправку POST-запроса с параметрами email и password на эндпоинт /api/auth/token/

Запуск проекта

DEBUG = 0
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres_user
POSTGRES_PASSWORD=postgres_password
DB_HOST=db
DB_PORT=5432
ENV=PRODUCTION
  • Собираем контейнеры:
docker-compose up -d
  • В результате должны быть собрано три контейнера, при введении следующей команды получаем список запущенных контейнеров:
docker-compose ls

Пример:

CONTAINER ID   IMAGE                                  COMMAND                  CREATED       STATUS       PORTS                                         NAMES
6708198d3cbe   nginx:1.19.3                           "/docker-entrypoint.…"   2 hours ago   Up 2 hours   0.0.0.0:80->80/tcp, :::80->80/tcp            infra_nginx_1
6b763aff17e7   surkovdocker/foodgram-backend:latest   "gunicorn foodgram.w…"   2 hours ago   Up 2 hours   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   infra_backend_1
9c75546ee7c9   postgres:13.0-alpine                   "docker-entrypoint.s…"   5 hours ago   Up 2 hours   5432/tcp                                      infra_db_1         
  • Сделать миграции, создать суперпользователя и собрать статику:
docker-compose exec backend python manage.py makemigrations
docker-compose exec backend python manage.py migrate
docker-compose exec backend python manage.py createsuperuser
docker-compose exec backend python manage.py collectstatic --no-input 
  • Для переноса данных ингредиентов в БД PostgreSQL выполнить команду:
    docker-compose exec backend python manage.py CSVexport
    

Контакты автора проекта:

Сурков Илья

email: [email protected]
telegram: @Surkov_i

foodgram-project-react's People

Contributors

ilyasurkov94 avatar

Watchers

 avatar

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.