Foodgram — это веб-приложение, которое позволяет пользователям создавать, просматривать и обмениваться рецептами. Оно также предоставляет возможность подписываться на понравившихся авторов, добавлять рецепты в избранное и генерировать списки покупок в .txt на основе выбранных рецептов. Это полностью рабочий проект, который состоит из бэкенд-приложения на Django и фронтенд-приложения на React.
- Регистрация и аутентификация пользователей
- Создание, редактирование и удаление рецептов
- Поиск рецептов по различным тегам
- Подписка на авторов
- Добавление рецептов в избранное
- Генерация списка покупок на основе выбранных рецептов
├── backend/ # Файлы бэкенда (Django)
├── docs/ # Файлы документации
├── frontend/ # Файлы фронтенда (React)
├── infra/ # Файлы для настройки Docker-контейнеров
├── postman-collection/ # Файлы для проверки работы API
├── .env.example # Файл-пример переменных окружения
├── .gitignore # Файл для игнорирования файлов
├── README.md # Файл с инструкциями (этот документ)
└── setup.cfg # Файл конфигурации
Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:andrew12022/foodgram_project_react.git
cd foodgram_project_react/backend
Cоздать и активировать виртуальное окружение:
python -m venv venv
source venv/bin/activate
Установить зависимости из файла requirements.txt:
python -m pip install --upgrade pip
pip install -r requirements.txt
Создать файл .env в исходной папке проекта:
POSTGRES_USER=foodram_user
POSTGRES_PASSWORD=foodram_password
POSTGRES_DB=foodgram
DB_HOST=db
DB_PORT=5432
SECRET_KEY='указать секретный ключ'
DEBUG=указать режим работы(False или True)
ALLOWED_HOSTS=указать внешний IP сервера, 127.0.0.1, localhost, домен(через запятые, без пробелов)Выполнить миграции:
python manage.py migrate
Перейти в папку /infra в командной строке:
cd infra
Из папки infra/ развернуть контейнеры при помощи docker-compose.production.yml:
docker compose -f docker-compose.production.yml up
Выполнить миграции:
docker compose -f docker-compose.production.yml exec backend python manage.py migrate
Собрать статику:
docker compose -f docker-compose.production.yml exec backend python manage.py collecstatic
Создать суперпользователя:
docker compose -f docker-compose.production.yml exec backend python manage.py createsuperuser
Наполнить базу данных ингредиентами и тегами:
docker compose -f docker-compose.production.yml exec backend python manage.py import_json
- Python
- Django
- Django REST framework
- PostgreSQL
- python-dotenv
- Gunicorn
- Nginx
- Docker
- React