Recipes — это веб-приложение, созданное на Django, которое позволяет пользователям делиться своими любимыми кулинарными рецептами, находить вдохновение и создавать списки покупок. Это своего рода кулинарная социальная сеть, где вы можете подписываться на других пользователей, добавлять рецепты в избранное и многое другое.
- Публикация рецептов: Пользователи могут создавать и публиковать собственные кулинарные рецепты с подробным описанием ингредиентов, шагов приготовления и фотографиями.
- Редактирование рецептов: Пользователи могут изменять свои опубликованные рецепты.
- Избранное: Пользователи могут добавлять рецепты других пользователей в список избранного для быстрого доступа.
- Список покупок: Пользователи могут добавлять ингредиенты из рецептов в список покупок, который автоматически подсчитывает необходимое количество каждого ингредиента.
- Скачивание списка покупок: Пользователи могут скачать список покупок в формате .txt для удобного использования в магазине.
- Подписки: Пользователи могут подписываться на других пользователей и видеть рецепты своих подписок в отдельной ленте.
- Короткие ссылки: Пользователи могут создавать короткие ссылки на отдельные рецепты для удобного обмена.
- Регистрация и аутентификация: Пользователи могут создавать учетные записи, аутентифицироваться и безопасно управлять своими профилями.
- Смена пароля: Пользователи могут изменять свой пароль для повышения безопасности аккаунта.
- Аватар пользователя: Пользователи могут загружать и удалять аватары для персонализации своего профиля.
- Язык программирования: Python 3.9
- Веб-фреймворк: Django
- REST API: Django REST Framework
- Аутентификация: Djoser
- База данных: PostgreSQL
- Обработка изображений: Pillow
- Тестирование: flake8
- Развертывание: Gunicorn, Nginx, Docker
- Конфигурация: PyYAML
- Клонируйте репозиторий:
git clone git@github.com:Kesh113/recipes.git
cd foodgram- Добавьте обязательные переменные окружения
Вместо значений переменных подставьте свои.
echo 'POSTGRES_DB=recipes' >> .env
echo 'POSTGRES_USER=recipes_user' >> .env
echo 'POSTGRES_PASSWORD=recipes_password' >> .env
echo 'DB_HOST=db' >> .env
echo 'DB_PORT=5432' >> .env
echo 'SECRET_KEY=secret_key' >> .env
echo 'DEBUG=False' >> .env
echo 'ALLOWED_HOSTS=127.0.0.1,localhost' >> .env
echo 'SQLITE=False' >> .env- Разверните контейнеры
docker compose up -d- Выполните миграции и передайте статику с бэкэнда
docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py collectstatic- Загрузите фикстуры
docker compose exec backend python manage.py import_ingredients recipes/fixtures/ingredients.json
docker compose exec backend python manage.py import_tags recipes/fixtures/tags.json- Cоздайте супер пользователя
docker compose exec backend python manage.py createsuperuser8 Пользуйтесь сервисом
- Создайте и активируйте виртуальное окружение
cd backend/
py -3.9 -m venv venv
source venv/Scripts/activate- Установите зависимости
python -m pip install --upgrade pip
pip install -r requirements.txt- Выполните миграции и импортируйте фикстуры
python manage.py migratepython manage.py import_ingredients recipes/fixtures/ingredients.json
python manage.py import_tags recipes/fixtures/tags.json- Создайте супер пользователя и запустите бэкэнд сервер
python manage.py createsuperuser
python manage.py runserver- Изменить настройки в frontend/package.json
"proxy": "http://web:8000/" -> "proxy": "http://localhost:8000/"
Не забудьте поменять настройки обратно при передаче на продакшн
- Запустите фронтэнд сервер
cd ../frontend
npm run start- Запустите сервер с тех. докой
cd ../infra
docker compose up -d- Пользуйтесь сервисом
Широкожухов Артем Андреевич