Skip to content

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

Notifications You must be signed in to change notification settings

GrimJ0/FoodGram

Folders and files

NameName
Last commit message
Last commit date
Jan 1, 2022
Jan 1, 2022
Dec 31, 2021
Jan 2, 2022
Jan 2, 2022
Dec 22, 2021
Dec 20, 2021
Dec 31, 2021
Dec 20, 2021
Jan 2, 2022
Dec 22, 2021
Dec 22, 2021
Jan 2, 2022
Dec 22, 2021
Dec 22, 2021
Nov 21, 2021
Jan 25, 2022

Repository files navigation

FoodGram

Python Django JavaScript GitHub Git Nginx Postgres

Описание

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

Оглавление

Стек технологий

  • проект написан на Python с использованием Django
  • база данных - SQLite3 и PostgreSQL
  • тестирование: Unittest
  • система управления версиями - git
  • автоматическое развертывание проекта - Docker, docker-compose
  • Gunicorn
  • Nginx
  • JavaScript
  • Api

Как запустить проект используя Docker:

база данных PostgreSQL

  1. Клонируйте репозитроий с проектом:

    https://github.com/GrimJ0/FoodGram.git
    
  2. В директории проекта создайте файл .env, в котором пропишите следующие переменные окружения (для тестирования можете использовать указанные значения переменных):

    • SECRET_KEY= # сгенерировать ключ можно на сайте Djecrety
    • EMAIL_HOST_USER= # почта для отправки писем пользователям
    • EMAIL_HOST_PASSWORD= # пароль от почты
    • DJANGO_ALLOWED_HOSTS=localhost
    • DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
    • DATABASE=postgres # имя базы данных для entrypoint.sh
    • POSTGRES_DB=postgres # имя базы данных
    • POSTGRES_USER=postgres # логин для подключения к базе данных
    • POSTGRES_PASSWORD=postgres # пароль для подключения к БД (установите свой)
    • DB_HOST=db # название сервиса (контейнера)
    • DB_PORT=5432 # порт для подключения к БД
  3. С помощью Dockerfile и docker-compose.yaml разверните проект:

    docker-compose -f docker-compose.yml up -d --build
    
  4. В контейнере создайте суперпользователя и заполните базу начальными данными:

    docker-compose -f docker-compose.yml exec web python manage.py loaddata db.json
    
    docker-compose -f docker-compose.yml exec web python manage.py createsuperuser
    

Ваш проект запустился на http://localhost/

Как запустить проект без использования Docker:

база данных PostgreSQL или SQLite3

  1. Клонируйте репозитроий с проектом:

    https://github.com/GrimJ0/FoodGram.git
    
  2. В созданной директории установите виртуальное окружение, активируйте его и установите необходимые зависимости:

    python -m venv venv
    

    on Windows

    venv\Scripts\activate
    

    on Unix or MacOS

    source venv/bin/activate
    
    pip install -r requirements.txt
    
  3. Создайте в директории файл .env и поместите туда SECRET_KEY, необходимый для запуска проекта

    • SECRET_KEY= # сгенерировать ключ можно на сайте Djecrety
    • EMAIL_HOST_USER= # почта для отправки писем пользователям
    • EMAIL_HOST_PASSWORD= # пароль от почты
    • DJANGO_ALLOWED_HOSTS=localhost
  4. Выполните миграции:

    python manage.py migrate
    
  5. Загрузите тестовые данные, если хотите:

    python manage.py loaddata db.json
    
  6. Cоздайте суперпользователя:

    python manage.py createsuperuser
    
  7. Запустите сервер:

    python manage.py runserver
    

С помощью Unittest вы можете запустить тесты и проверить работу модулей:

python manage.py test

Ваш проект запустился на http://localhost:8000/

Ресурсы FoodGram

  • Главная страница:

    • Содержимое главной страницы — список рецептов, отсортированных по дате публикации (от новых к старым).
  • Страница рецепта:

    • На странице — полное описание рецепта, возможность добавить рецепт в избранное и в список покупок, возможность подписаться на автора рецепта.
  • Страница пользователя:

    • На странице — имя пользователя, все рецепты, опубликованные пользователем и возможность подписаться на пользователя.
  • Подписка на авторов:

  • Подписка на публикации доступна только авторизованному пользователю. Страница подписок доступна только владельцу.

  • Список избранного:

    • Работа со списком избранного доступна только авторизованному пользователю. Список избранного может просматривать только его владелец.
  • Список покупок:

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

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

    • Гость (неавторизованный пользователь)
    • Авторизованный пользователь
    • Администратор

  • Что могут делать неавторизованные пользователи:

    • Создать аккаунт.
    • Просматривать рецепты на главной.
    • Просматривать отдельные страницы рецептов.
    • Просматривать страницы пользователей.
    • Фильтровать рецепты по тегам.
    • Работать с персональным списком покупок: добавлять/удалять любые рецепты, выгружать файл со количеством необходимых ингредиентов для рецептов из списка покупок.
  • Что могут делать авторизованные пользователи:

    • Входить в систему под своим логином и паролем.
    • Выходить из системы (разлогиниваться).
    • Восстанавливать свой пароль.
    • Менять свой пароль.
    • Создавать/редактировать/удалять собственные рецепты
    • Просматривать рецепты на главной.
    • Просматривать страницы пользователей.
    • Просматривать отдельные страницы рецептов.
    • Фильтровать рецепты по тегам.
    • Работать с персональным списком избранного: добавлять/удалять чужие рецепты, просматривать свою страницу избранных рецептов.
    • Работать с персональным списком покупок: добавлять/удалять любые рецепты, выгружать файл со количеством необходимых ингредиентов для рецептов из списка покупок.
    • Подписываться на публикации авторов рецептов и отменять подписку, просматривать свою страницу подписок.
  • Что может делать администратор:

    Администратор обладает всеми правами авторизованного пользователя.

    Плюс к этому он может:

    • изменять пароль любого пользователя,
    • создавать/блокировать/удалять аккаунты пользователей,
    • редактировать/удалять любые рецепты,
    • добавлять/удалять/редактировать ингредиенты

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published