Веб-приложение представляет собой проект с несколькими страницами: главной, страницей рецепта, страницей пользователя, страницей подписок, избранным, списком покупок, а также страницей создания и редактирования рецепта. Главная страница содержит рецепты, отсортированные по дате публикации, с возможностью постраничной пагинации.
Страница рецепта предоставляет полное описание рецепта, позволяя авторизованным пользователям добавлять рецепты в избранное и в список покупок, а также подписываться на автора. Страница пользователя отображает имя пользователя, все его опубликованные рецепты.
Страница подписок доступна только владельцу аккаунта, позволяя просматривать рецепты от подписанных авторов.
Избранное позволяет авторизованным пользователям отмечать рецепты и просматривать свой список избранных. Список покупок, доступный только авторизованным пользователям, позволяет добавлять репецты в корзину и скачивать список в формате pdf, где ингредиенты не дублируются.
Создание и редактирование рецепта доступны только авторизованным пользователям, с обязательным заполнением всех полей. Фильтрация по тегам позволяет классифицировать и искать рецепты.
- Фронтенд: React
- Бэкенд: Django Rest Framework
- База данных: PostgreSQL
- Nginx
- Docker
- Gunicorn
- Github actions
Проект разделен на три контейнера: nginx, PostgreSQL и Django, запускаемые через docker-compose. Файлы для сборки фронтенда хранятся в репозитории foodgram-project-react в папке frontend.
Для запуска проекта выполните следующие шаги:
- Склонируйте репозиторий foodgram-project-react на свой компьютер.
- Создайте и активируйте виртуальное окружение:
- Windows
python -m venv venv source venv/Scripts/activate
- Linux/macOS
python3 -m venv venv source venv/bin/activate
- Обновите pip:
- Windows
(venv) python -m pip install --upgrade pip
- Linux/macOS
(venv) python3 -m pip install --upgrade pip
- Установите зависимости из файла requirements.txt:
(venv) pip install -r requirements.txt
- Создайте и заполните файл .env по примеру с файлом .env.example.
- Запустите проект в трёх контейнерах с помощью Docker Compose:
docker compose up
- Сделайте миграцию:
docker compose exec backend python manage.py migrate
- Соберите статику:
docker compose exec backend python manage.py collectstatic
docker compose exec backend cp -r /app/collected_static/. /backend_static/static/
- Загрузите данные с ингредиентами:
docker compose exec backend python manage.py import_ingredients
- Если потребуется работа в панели администратора, создайте суперпользователя:
docker compose exec backend python manage.py createsuperuser
Проект развернут на домашнем сервере и доступен по адресу foodgram.myftp.biz