Кулинарный онлайн-сервис и API для него. На этом сервисе пользователи смогут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а так же скачивать список продуктов, необходимых для приготовления выбранных блюд.
Сайт доступен по адресу http://foodgram-project.ddns.net/
Полная документация по API: http://foodgram-project.ddns.net/api/docs/
- Username: foodgram_admin
- Password: admin
- Email: [email protected]
Функционал | Неавторизованные пользователи | Авторизованные пользователи | Администратор |
---|---|---|---|
Доступна главная страница. | ✔️ | ✔️ | ✔️ |
Доступна и работает форма авторизации | ✔️ | ✔️ | ✔️ |
Доступна страница отдельного рецепта. | ✔️ | ✔️ | ✔️ |
Доступна и работает форма регистрации. | ✔️ | ✔️ | ✔️ |
Доступна страница «Мои подписки» | ❌ | ✔️ | ✔️ |
Можно подписаться и отписаться на странице рецепта | ❌ | ✔️ | ✔️ |
Можно подписаться и отписаться на странице автора | ❌ | ✔️ | ✔️ |
При подписке рецепты автора добавляются на страницу «Мои подписки» и удаляются оттуда при отказе от подписки. | ❌ | ✔️ | ✔️ |
Доступна страница «Избранное» | ❌ | ✔️ | ✔️ |
На странице рецепта есть возможность добавить рецепт в список избранного и удалить его оттуда | ❌ | ✔️ | ✔️ |
На любой странице со списком рецептов есть возможность добавить рецепт в список избранного и удалить его оттуда | ❌ | ✔️ | ✔️ |
Доступна страница «Список покупок» | ❌ | ✔️ | ✔️ |
На странице рецепта есть возможность добавить рецепт в список покупок и удалить его оттуда | ❌ | ✔️ | ✔️ |
На любой странице со списком рецептов есть возможность добавить рецепт в список покупок и удалить его оттуда | ❌ | ✔️ | ✔️ |
Есть возможность выгрузить файл (.txt) с перечнем и количеством необходимых ингредиентов для рецептов из «Списка покупок» | ❌ | ✔️ | ✔️ |
Ингредиенты в выгружаемом списке не повторяются, корректно подсчитывается общее количество для каждого ингредиента | ❌ | ✔️ | ✔️ |
Доступна страница «Создать рецепт» | ❌ | ✔️ | ✔️ |
Есть возможность опубликовать свой рецепт | ❌ | ✔️ | ✔️ |
Есть возможность отредактировать и сохранить изменения в своём рецепте | ❌ | ✔️ | ✔️ |
Есть возможность удалить свой рецепт | ❌ | ✔️ | ✔️ |
Доступна и работает форма изменения пароля | ❌ | ✔️ | ✔️ |
Доступна возможность выйти из системы (разлогиниться) | ❌ | ✔️ | ✔️ |
Доступна и работает система восстановления пароля. | ❌ | ✔️ | ✔️ |
Изменять пароль любого пользователя. | ❌ | ❌ | ✔️ |
Создавать/блокировать/удалять аккаунты пользователей. | ❌ | ❌ | ✔️ |
Редактировать/удалять любые рецепты. | ❌ | ❌ | ✔️ |
Добавлять/удалять/редактировать ингредиенты. | ❌ | ❌ | ✔️ |
Добавлять/удалять/редактировать теги. | ❌ | ❌ | ✔️ |
1️⃣ Все модели доступны в админ-зоне, в том числе редактирование/удаление запискей.
2️⃣ Добавлена возможнсть блокирования пользователей. Заблокированные пользователя не имеют доступ к ресурсу.
3️⃣ На админ-странице рецепта отображается количество добавлений этого рецепта в избранное.
4️⃣ Для модели ингредиентов включена фильтрация по названию.
Пользователя может создать администратор — через админ-зону или через POST-запрос на специальный эндпоинт api/users/ Получение токена реализовано через отправку POST-запроса с параметрами email и password на эндпоинт /api/auth/token/
-
Клонировать репозиторий GitHub: https://github.com/ilyasurkov94/foodgram-project-react
-
Создать файл .env в папке проекта:
DEBUG = 0
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres_user
POSTGRES_PASSWORD=postgres_password
DB_HOST=db
DB_PORT=5432
ENV=PRODUCTION
- Собираем контейнеры:
docker-compose up -d
- В результате должны быть собрано три контейнера, при введении следующей команды получаем список запущенных контейнеров:
docker-compose ls
Пример:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6708198d3cbe nginx:1.19.3 "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp, :::80->80/tcp infra_nginx_1
6b763aff17e7 surkovdocker/foodgram-backend:latest "gunicorn foodgram.w…" 2 hours ago Up 2 hours 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp infra_backend_1
9c75546ee7c9 postgres:13.0-alpine "docker-entrypoint.s…" 5 hours ago Up 2 hours 5432/tcp infra_db_1
- Сделать миграции, создать суперпользователя и собрать статику:
docker-compose exec backend python manage.py makemigrations
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
- Для переноса данных ингредиентов в БД PostgreSQL выполнить команду:
docker-compose exec backend python manage.py CSVexport
email: [email protected]
telegram: @Surkov_i