Онлайн-сервис для публикации рецептов, подписки на авторов и формирования списка покупок.
Пользователи могут публиковать собственные рецепты, добавлять понравившиеся блюда в избранное, подписываться на любимых авторов, автоматически формировать список необходимых ингредиентов и делиться рецептами по коротким ссылкам.
Важно: в рамках данного проекта мной была реализована backend-часть приложения (API, бизнес-логика, база данных, Docker, настройка инфраструктуры). Frontend был предоставлен заранее и не входит в область моей разработки.
- регистрация и авторизация пользователей;
- публикация, редактирование и удаление рецептов;
- загрузка изображений блюд;
- теги и ингредиенты;
- подписка на авторов;
- избранные рецепты;
- корзина покупок;
- выгрузка списка покупок в текстовый файл;
- короткие ссылки на рецепты;
- административная панель Django;
- REST API;
- контейнеризация приложения с Docker;
- автоматический CI/CD через GitHub Actions.
- Python 3.12
- Django 5
- Django REST Framework
- Djoser
- JWT Authentication
- PostgreSQL 17
- SQLite (для локальной разработки)
- Docker
- Docker Compose
- Gunicorn
- Nginx
- GitHub Actions
backend/ Backend на Django
frontend/ React-приложение (предоставлено)
infra/ Docker, Gunicorn, Nginx
docs/ Документация API
data/ Начальные данные
git clone https://github.com/shibaevvv/foodgram.git
cd foodgramСкопируйте файл:
cp .env.example .envи заполните необходимые переменные.
docker compose up -ddocker compose exec backend python manage.py migratedocker 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 load_data ingredients.json
docker compose exec backend python manage.py load_data tags.jsondocker compose exec backend python manage.py createsuperuserПерейдите в каталог проекта:
cd backendСоздайте виртуальное окружение:
python -m venv venvАктивируйте его.
Установите зависимости:
pip install -r requirements.txtВыполните миграции:
python manage.py migrateПри необходимости загрузите тестовые данные:
python manage.py load_data ingredients.json
python manage.py load_data tags.jsonЗапустите сервер:
python manage.py runserver| Адрес | Назначение |
|---|---|
| http://localhost/ | Веб-интерфейс |
| http://localhost/api/docs/ | Документация REST API |
| http://localhost/admin/ | Панель администратора |
Основные параметры приложения:
POSTGRES_DB=foodgram
POSTGRES_USER=foodgram_user
POSTGRES_PASSWORD=foodgram_password
DB_HOST=db
DB_PORT=5432
SECRET_KEY=your_secret_key
DEBUG=False
ALLOWED_HOSTS=localhost,127.0.0.1
CSRF_TRUSTED_ORIGINS=https://example.comПолный список переменных приведён в файле .env.example.
Владимир Шибаев
- GitHub: https://github.com/shibaevvv
- Telegram: https://t.me/shibaevvv
- Email: shibaev.vladimir@gmail.com