8000
Skip to content

Foodgram - это сервис для публикации и поиска кулинарных рецептов. Пользователи могут подписываться на других авторов, добавлять рецепты в избранное и формировать списки покупок. Проект развёрнут с использованием Docker и CI/CD через GitHub Actions.

Notifications You must be signed in to change notification settings

CASEYNGER/foodgram

Repository files navigation

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

Foodgram - это сервис для публикации и поиска кулинарных рецептов. Пользователи могут подписываться на других авторов, добавлять рецепты в избранное и формировать списки покупок. Проект развёрнут с использованием Docker и CI/CD через GitHub Actions.

🎯 Возможности:

  • Регистрация, вход и управление профилем.
  • Публикация, редактирование и удаление рецептов.
  • Подписка на авторов.
  • Добавление рецептов в избранное.
  • Формирование и скачивание списка покупок.
  • Фильтрация по тегам.
  • Админ-зона для управления пользователями и контентом.

Best practicies: поддержка HTTPS с помощью Certbot и Let's Encrypt.

Технологии

Раздел Технологии
🎨 Frontend JavaScript, HTML, CSS, React
⚙️ Backend Python, Django, Django REST Framework, Djoser, Postman, REST API
🗄 База данных PostgreSQL
🚀 Деплой Docker, Gunicorn, Nginx, HTTPS (Certbot), Git, GitHub Actions

Начало работы

  1. Клонировать текущий репозиторий
git clone https://github.com/CASEYNGER/foodgram
  1. Создать файл .env по аналогии с .env.example в папке с проектом foodgram/.
  2. Выполнить последовательно команды в терминале
docker compose up -d  # Запуск оркестрации
docker exec -it foodgram_backend sh  # Перейти в контейнер бэкенда

python manage.py makemigrations recipes  # Создать миграции для рецептов
python manage.py makemigrations users  # Создать миграции для пользователей
python manage.py migrate  # Провести миграцию в БД

python manage.py collectstatic  # Собрать статику
python manage.py load_ingredients  # Запустить скрипт заполнения БД ингредиентами

python manage.py createsuperuser  # Создать суперпользователя

Локальные эндпоинты

Деплой-эндпоинты

Общий чек-лист


  • Проект доступен по IP или доменному имени;
  • Рецепты на всех страницах сортируются по дате публикации;
  • Работает фильтрация по тэгам на всех встраницах;
  • Работает пагинатор, в т.ч. при фильтрации по тэгам;
  • Исходные рецепты предзагружены;
  • Пользователь может скачать свой список покупок в формате .txt;
  • Ингредиенты в списке покупок суммируются;
  • Проект работает с PostgreSQL;
  • Проект запущен на виртуальном сервере в трех контейнерах: nginx, PostgreSQL и Django+Gunicorn;
  • Образ с проектом обновляется в облачном хранилище;
  • В nginx настроена раздача статики, запросы с фронтенда переадресуются в контейнер с Gunicorn. Джанго-админка работает напрямую через Gunicorn;
  • Данные сортируются в volumes;
  • Код соответствует PEP 8.

Чек-лист по доступам для пользователей в соответствии с их правами


Для авторизованных пользователей:

  • Доступна главная страница.
  • Доступна страница другого пользователя.
  • Доступна страница отдельного рецепта.
  • Доступна страница «Мои подписки»:
    • можно подписаться и отписаться на странице рецепта;
    • можно подписаться и отписаться на странице автора;
    • при подписке рецепты автора добавляются на страницу «Мои подписки» и удаляются оттуда при отказе от подписки.
  • Доступна страница «Избранное»:
    • на странице рецепта есть возможность добавить рецепт в список избранного и удалить его оттуда;
    • на любой странице со списком рецептов есть возможность добавить рецепт в список избранного и удалить его оттуда.
  • Доступна страница «Список покупок»:
    • на странице рецепта есть возможность добавить рецепт в список покупок и удалить его оттуда;
    • на любой странице со списком рецептов есть возможность добавить рецепт в список покупок и удалить его оттуда;
    • есть возможность выгрузить файл с перечнем и количеством необходимых ингредиентов для рецептов из «Списка покупок»;
    • ингредиенты в выгружаемом списке не повторяются, корректно подсчитывается общее количество для каждого ингредиента.
  • Доступна страница «Создать рецепт»:
    • есть возможность опубликовать свой рецепт;
    • есть возможность отредактировать и сохранить изменения в своём рецепте;
    • есть возможность удалить свой рецепт.
  • Доступна возможность изменить пароль.
  • Доступна возможность изменить/удалить изображение профиля.
  • Доступна возможность выйти из системы.

Для неавторизованных пользователей:

  • Доступна главная страница.
  • Доступна страница отдельного рецепта.
  • Доступна страница любого пользователя.
  • Доступна и работает форма входа.
  • Доступна и работает форма регистрации.

Администратор и админ-зона:

  • Все модели выведены в админ-зону.
  • Для модели пользователей доступен поиск по имени и адресу электронной почты.
  • Для модели рецептов включен поиск по названию, автору и фильтрация по тегам.
  • На админ-странице рецепта отображается общее число добавлений этого рецепта в избранное.
  • Для модели ингредиентов работает поиск по названию.

Дипломный проект выполнил


CASEYNGER

About

Foodgram - это сервис для публикации и поиска кулинарных рецептов. Пользователи могут подписываться на других авторов, добавлять рецепты в избранное и формировать списки покупок. Проект развёрнут с использованием Docker и CI/CD через GitHub Actions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0