Skip to content

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

Notifications You must be signed in to change notification settings

GrimJ0/FoodGram

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