FoodGram это онлайн-сервис, где пользователи могут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а перед походом в магазин скачивать сводный список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.
- Стек технологий
- Как запустить проект используя Docker
- Как запустить проект без использования Docker
- Ресурсы FoodGram
- Что могут делать неавторизованные пользователи
- Что могут делать авторизованные пользователи
- Что может делать администратор
- проект написан на Python с использованием Django
- база данных - SQLite3 и PostgreSQL
- тестирование: Unittest
- система управления версиями - git
- автоматическое развертывание проекта - Docker, docker-compose
- Gunicorn
- Nginx
- JavaScript
- Api
база данных PostgreSQL
-
Клонируйте репозитроий с проектом:
https://github.com/GrimJ0/FoodGram.git
-
В директории проекта создайте файл .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 # порт для подключения к БД
-
С помощью Dockerfile и docker-compose.yaml разверните проект:
docker-compose -f docker-compose.yml up -d --build
-
В контейнере создайте суперпользователя и заполните базу начальными данными:
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/
база данных PostgreSQL или SQLite3
-
Клонируйте репозитроий с проектом:
https://github.com/GrimJ0/FoodGram.git
-
В созданной директории установите виртуальное окружение, активируйте его и установите необходимые зависимости:
python -m venv venv
on Windows
venv\Scripts\activate
on Unix or MacOS
source venv/bin/activate
pip install -r requirements.txt
-
Создайте в директории файл .env и поместите туда SECRET_KEY, необходимый для запуска проекта
- SECRET_KEY= # сгенерировать ключ можно на сайте Djecrety
- EMAIL_HOST_USER= # почта для отправки писем пользователям
- EMAIL_HOST_PASSWORD= # пароль от почты
- DJANGO_ALLOWED_HOSTS=localhost
-
Выполните миграции:
python manage.py migrate
-
Загрузите тестовые данные, если хотите:
python manage.py loaddata db.json
-
Cоздайте суперпользователя:
python manage.py createsuperuser
-
Запустите сервер:
python manage.py runserver
С помощью Unittest вы можете запустить тесты и проверить работу модулей:
python manage.py test
Ваш проект запустился на http://localhost:8000/
-
- Содержимое главной страницы — список рецептов, отсортированных по дате публикации (от новых к старым).
-
- На странице — полное описание рецепта, возможность добавить рецепт в избранное и в список покупок, возможность подписаться на автора рецепта.
-
- На странице — имя пользователя, все рецепты, опубликованные пользователем и возможность подписаться на пользователя.
-
Подписка на публикации доступна только авторизованному пользователю. Страница подписок доступна только владельцу.
-
- Работа со списком избранного доступна только авторизованному пользователю. Список избранного может просматривать только его владелец.
-
- Работа со списком покупок доступна авторизованным пользователям и неавторизованным пользователям через сессии.
- Если неавторизованный пользователь добавит рецепт в список покупки, а потом пройдет регистрацию, то все покупки привяжутся к его аккаунту.
- Список покупок может просматривать только его владелец.
- При нажатии на кнопку скачать и получает файл с суммированным перечнем и количеством необходимых ингредиентов для всех рецептов, сохранённых в «Списке покупок» в формате PDF.
-
- При нажатии на название тега выводится список рецептов, отмеченных этим тегом. Фильтрация может проводится по нескольким тегам в комбинации «или»: если выбраны несколько тегов — в результате покажутся рецепты, которые отмечены хотя бы одним из этих тегов.
-
- Гость (неавторизованный пользователь)
- Авторизованный пользователь
- Администратор
-
- Создать аккаунт.
- Просматривать рецепты на главной.
- Просматривать отдельные страницы рецептов.
- Просматривать страницы пользователей.
- Фильтровать рецепты по тегам.
- Работать с персональным списком покупок: добавлять/удалять любые рецепты, выгружать файл со количеством необходимых ингредиентов для рецептов из списка покупок.
-
- Входить в систему под своим логином и паролем.
- Выходить из системы (разлогиниваться).
- Восстанавливать свой пароль.
- Менять свой пароль.
- Создавать/редактировать/удалять собственные рецепты
- Просматривать рецепты на главной.
- Просматривать страницы пользователей.
- Просматривать отдельные страницы рецептов.
- Фильтровать рецепты по тегам.
- Работать с персональным списком избранного: добавлять/удалять чужие рецепты, просматривать свою страницу избранных рецептов.
- Работать с персональным списком покупок: добавлять/удалять любые рецепты, выгружать файл со количеством необходимых ингредиентов для рецептов из списка покупок.
- Подписываться на публикации авторов рецептов и отменять подписку, просматривать свою страницу подписок.
-
- изменять пароль любого пользователя,
- создавать/блокировать/удалять аккаунты пользователей,
- редактировать/удалять любые рецепты,
- добавлять/удалять/редактировать ингредиенты