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 |
- Клонировать текущий репозиторий
git clone https://github.com/CASEYNGER/foodgram- Создать файл
.envпо аналогии с.env.exampleв папке с проектомfoodgram/. - Выполнить последовательно команды в терминале
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 # Создать суперпользователя- Фудграм: http://0.0.0.0:8888/
- Панель администратора: http://0.0.0.0:8888/admin/
- API: http://0.0.0.0:8888/api/
- Документация к API: http://0.0.0.0:8888/api/docs/
- Фудграм: https://foodgramming.ddns.net/
- Панель администратора: https://foodgramming.ddns.net/admin/
- API: https://foodgramming.ddns.net/api/
- Документация к API: https://foodgramming.ddns.net/api/docs/
- Проект доступен по IP или доменному имени;
- Рецепты на всех страницах сортируются по дате публикации;
- Работает фильтрация по тэгам на всех встраницах;
- Работает пагинатор, в т.ч. при фильтрации по тэгам;
- Исходные рецепты предзагружены;
- Пользователь может скачать свой список покупок в формате
.txt; - Ингредиенты в списке покупок суммируются;
- Проект работает с PostgreSQL;
- Проект запущен на виртуальном сервере в трех контейнерах:
nginx,PostgreSQLиDjango+Gunicorn; - Образ с проектом обновляется в облачном хранилище;
- В
nginxнастроена раздача статики, запросы с фронтенда переадресуются в контейнер сGunicorn. Джанго-админка работает напрямую черезGunicorn; - Данные сортируются в
volumes; - Код соответствует PEP 8.
Для авторизованных пользователей:
- Доступна главная страница.
- Доступна страница другого пользователя.
- Доступна страница отдельного рецепта.
- Доступна страница «Мои подписки»:
- можно подписаться и отписаться на странице рецепта;
- можно подписаться и отписаться на странице автора;
- при подписке рецепты автора добавляются на страницу «Мои подписки» и удаляются оттуда при отказе от подписки.
- Доступна страница «Избранное»:
- на странице рецепта есть возможность добавить рецепт в список избранного и удалить его оттуда;
- на любой странице со списком рецептов есть возможность добавить рецепт в список избранного и удалить его оттуда.
- Доступна страница «Список покупок»:
- на странице рецепта есть возможность добавить рецепт в список покупок и удалить его оттуда;
- на любой странице со списком рецептов есть возможность добавить рецепт в список покупок и удалить его оттуда;
- есть возможность выгрузить файл с перечнем и количеством необходимых ингредиентов для рецептов из «Списка покупок»;
- ингредиенты в выгружаемом списке не повторяются, корректно подсчитывается общее количество для каждого ингредиента.
- Доступна страница «Создать рецепт»:
- есть возможность опубликовать свой рецепт;
- есть возможность отредактировать и сохранить изменения в своём рецепте;
- есть возможность удалить свой рецепт.
- Доступна возможность изменить пароль.
- Доступна возможность изменить/удалить изображение профиля.
- Доступна возможность выйти из системы.
Для неавторизованных пользователей:
- Доступна главная страница.
- Доступна страница отдельного рецепта.
- Доступна страница любого пользователя.
- Доступна и работает форма входа.
- Доступна и работает форма регистрации.
Администратор и админ-зона:
- Все модели выведены в админ-зону.
- Для модели пользователей доступен поиск по имени и адресу электронной почты.
- Для модели рецептов включен поиск по названию, автору и фильтрация по тегам.
- На админ-странице рецепта отображается общее число добавлений этого рецепта в избранное.
- Для модели ингредиентов работает поиск по названию.
CASEYNGER