Skip to content

Repository files navigation

Foodgram — продуктовый помощник

Python Django DRF PostgreSQL Docker Nginx GitHub Actions

Онлайн-сервис для публикации рецептов, подписки на авторов и формирования списка покупок.

Пользователи могут публиковать собственные рецепты, добавлять понравившиеся блюда в избранное, подписываться на любимых авторов, автоматически формировать список необходимых ингредиентов и делиться рецептами по коротким ссылкам.

Важно: в рамках данного проекта мной была реализована backend-часть приложения (API, бизнес-логика, база данных, Docker, настройка инфраструктуры). Frontend был предоставлен заранее и не входит в область моей разработки.


Статус проекта

Main Foodgram workflow


Возможности

  • регистрация и авторизация пользователей;
  • публикация, редактирование и удаление рецептов;
  • загрузка изображений блюд;
  • теги и ингредиенты;
  • подписка на авторов;
  • избранные рецепты;
  • корзина покупок;
  • выгрузка списка покупок в текстовый файл;
  • короткие ссылки на рецепты;
  • административная панель Django;
  • REST API;
  • контейнеризация приложения с Docker;
  • автоматический CI/CD через GitHub Actions.

Стек технологий

Backend

  • 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/           Начальные данные

Быстрый запуск

1. Клонировать репозиторий

git clone https://github.com/shibaevvv/foodgram.git

cd foodgram

2. Создать файл .env

Скопируйте файл:

cp .env.example .env

и заполните необходимые переменные.

3. Запустить приложение

docker compose up -d

4. Выполнить миграции

docker compose exec backend python manage.py migrate

5. Собрать статические файлы

docker compose exec backend python manage.py collectstatic

docker compose exec backend cp -r /app/collected_static/. /backend_static/static/

6. Загрузить тестовые данные (необязательно)

docker compose exec backend python manage.py load_data ingredients.json

docker compose exec backend python manage.py load_data tags.json

7. Создать администратора

docker compose exec backend python manage.py createsuperuser

Локальный запуск Backend

Перейдите в каталог проекта:

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.


Автор

Владимир Шибаев

About

Сервис для публикации рецептов, подписок на авторов и формирования списка покупок на Django REST Framework.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages