Giter Site home page Giter Site logo

xofmdo / foodgram-project Goto Github PK

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

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

Dockerfile 0.19% HTML 1.31% CSS 14.73% JavaScript 53.49% Python 29.97% Shell 0.29%
django django-rest-framework docker docker-compose github-action gunicorn nginx postgresql python

foodgram-project's Introduction

foodgram-project-react Workflow Status

Продуктовый помощник Foodgram

Python Django Django REST Framework PostgreSQL Nginx gunicorn Docker Docker-compose Docker Hub GitHub%20Actions Yandex.Cloud

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

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

Запуск проекта в dev-режиме

  • Клонируйте репозиторий с проектом на свой компьютер. В терминале из рабочей директории выполните команду:
git clone https://github.com/xofmdo/foodgram-project-react.git
  • Установить и активировать виртуальное окружение
source /venv/bin/activate
  • Установить зависимости из файла requirements.txt
python -m pip install --upgrade pip
pip install -r requirements.txt
  • Создать файл .env в папке проекта:
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД (установите свой)
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
DEBUG=0

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

python manage.py migrate
  • В папке с файлом manage.py выполнить команду:
python manage.py runserver
  • Создание нового супер пользователя
python manage.py createsuperuser

Загрузите статику:

python manage.py collectstatic --no-input

Заполните базу тестовыми данными:

python manage.py add_tags_from_data
python manage.py add_ingidients_from_data 

Запуск проекта через Docker

Установите Docker, используя инструкции с официального сайта:

Клонируйте репозиторий с проектом на свой компьютер. В терминале из рабочей директории выполните команду:

git clone https://github.com/xofmdo/foodgram-project-react.git
  • в Docker cоздаем образ :
docker build -t foodgram .

Выполните команду:

cd ../infra
docker-compose up -d --build
  • В результате должны быть собрано три контейнера, при введении следующей команды получаем список запущенных контейнеров:
docker-compose ps

Назначение контейнеров:

IMAGES NAMES DESCRIPTIONS
nginx:1.19.3 infra-_nginx_1 контейнер HTTP-сервера
postgres:12.4 infra-_db_1 контейнер базы данных
xofmdo/foodgram_back:latest infra-_backend_1 контейнер приложения Django
xofmdo/foodgram_ront:latest infra-_frontend_1 контейнер приложения React

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

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

Заполните базу тестовыми данными:

docker-compose exec backend python manage.py add_tags_from_data
docker-compose exec backend python manage.py add_ingidients_from_data   

Основные адреса:

Адрес Описание
127.0.0.1 Главная страница
127.0.0.1/admin/ Для входа в панель администратора
127.0.0.1/api/docs/ Описание работы API

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

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

Автор:

Кузьмич Александр
email: [email protected]
telegram @xofmdo

foodgram-project's People

Watchers

 avatar

Forkers

kirillosscummer

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.