Skip to content

About

Foodgram project template

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

85 Commits

Folders and files

Repository files navigation

Продуктовый помощник - «Фудграм»


foodgram workflow

Проект "Foodgram" - это веб-приложение, позволяющее пользователям публиковать рецепты, добавлять чужие рецепты в избранное, подписываться на публикации других авторов и создавать список покупок для приготовления выбранных блюд. В этом репозитории вы найдете готовый фронтенд проекта, который является одностраничным приложением на React. Вам также предоставлены файлы для сборки фронтенда, которые находятся в репозитории "foodgram-project-react" в папке "frontend". Этот репозиторий следует склонировать к себе на компьютер после изучения соответствующих уроков.


Технологии

  • Python 3.10
  • Django 3.2.3
  • Django REST framework 3.12.4
  • Nginx
  • Docker
  • Postgres

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

foodgram-project-react
│
├── .github/                # Директория с настройками GitHub Actions
│   ├── workflows/          # Настройки для автоматических рабочих процессов GitHub
│   │   ├── workflow.yml    # Конфигурационный файл GitHub Actions
│
├── backend/                # Директория для бэкенда
│
├── data/                   # Директория с данными
│
├── docs/                   # Директория с документацией проекта
│
├── frontend/                # Директория с фронтендом (SPA приложением на React)
│
├── infra/                   # Директория с инфраструктурными настройками
│   ├── nginx/               # Конфигурационные файлы для NGINX
│   ├── docker-compose.yml   # Конфигурационный файл для Docker Compose
│
├── .gitignore              # Файл для игнорирования файлов и директорий в Git
├── README.md               # Описание проекта и инструкции
├── setup.cfg               # Файл с настройками проекта

Инструкции по установке и запуску:

Шаг 1: Склонируйте репозиторий и настройте окружение:

git clone https://github.com/VlKazmin/foodgram-project-react.git
cd foodgram-project-react/
# сделайте копию файла <.env.template> в <.env>
cp -i .env.template .env

Шаг 2: Запустите приложение с помощью Docker:

cd foodgram-project-react/infra
docker compose up -d
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/. /static/
# Для заполнения базы ингредиентами выполните:
docker-compose exec backend python manage.py load_ingredients
# Создаем суперпользователя
docker exec -it app python manage.py createsuperuser

Проект будет доступен по адресу - http://localhost:8000/


Документация API

Документация API предоставляет подробное описание и схему запросов и ответов, которые можно использовать для взаимодействия с вашим приложением. Вот основные конечные точки API и как к ним обратиться:

Адрес документации API:

  • Документация API доступна по адресу http://localhost:8000/api/docs/.
  • Здесь вы найдете подробные сведения о каждом эндпоинте, поддерживаемых методах и структуре запросов и ответов.

Регистрация и аутентификация:

  • Для доступа к большинству функций API, вам потребуется аутентифицироваться. Вы можете зарегистрировать нового пользователя через эндпоинт /api/users/register/. После успешной регистрации вы получите токен доступа, который необходимо передавать в заголовке Authorization для аутентификации в последующих запросах.

Примеры запросов API:

  • Получение списка рецептов: GET /api/recipes/ Этот запрос позволяет получить список всех доступных рецептов.
{
  "count": 123,
  "next": "http://foodgram.example.org/api/recipes/?page=4",
  "previous": "http://foodgram.example.org/api/recipes/?page=2",
  "results": [
    {
      "id": 0,
      "tags": [
        {
          "id": 0,
          "name": "Завтрак",
          "color": "#E26C2D",
          "slug": "breakfast"
        }
      ],
      "author": {
        "email": "user@example.com",
        "id": 0,
        "username": "string",
        "first_name": "Вася",
        "last_name": "Пупкин",
        "is_subscribed": false
      },
      "ingredients": [
        {
          "id": 0,
          "name": "Картофель отварной",
          "measurement_unit": "г",
          "amount": 1
        }
      ],
      "is_favorited": true,
      "is_in_shopping_cart": true,
      "name": "string",
      "image": "http://foodgram.example.org/media/recipes/images/image.jpeg",
      "text": "string",
      "cooking_time": 1
    }
  ]
}
  • Создание нового рецепта: POST /api/recipes/ Чтобы создать новый рецепт, отправьте POST-запрос с данными о рецепте, включая его название, описание и список ингредиентов.
{
  "ingredients": [
    {
      "id": 1123,
      "amount": 10
    }
  ],
  "tags": [
    1,
    2
  ],
  "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAgMAAABieywaAAAACVBMVEUAAAD///9fX1/S0ecCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNoAAAAggCByxOyYQAAAABJRU5ErkJggg==",
  "name": "string",
  "text": "string",
  "cooking_time": 1
}
  • Получение списка ингредиентов: GET /api/ingredients/ Этот запрос вернет список всех ингредиентов, которые можно использовать при создании рецепта.

Аутентификация:

Для доступа к некоторым функциям API, таким как создание и редактирование рецептов, аутентификация обязательна. Для аутентификации, используйте токен доступа, который вы получили после регистрации или аутентификации.

Пример использования токена: Добавьте заголовок Authorization к вашим запросам с токеном доступа:

Authorization: Token your-token-here

Теперь у вас есть доступ к полной функциональности API вашего приложения, и вы можете создавать, редактировать и управлять рецептами, а также выполнять другие действия, доступные через API.


Непрерывная интеграция и доставка (CI/CD)


Проект "Foodgram" также интегрирован с непрерывной интеграцией (CI) и непрерывной доставкой (CD) с использованием GitHub Actions. Это позволяет автоматизировать процессы тестирования, сборки и развертывания приложения.

Непрерывная интеграция (CI)

Настроенные рабочие процессы GitHub Actions позволяют автоматически выполнять следующие шаги после каждого пуша в репозиторий:

  • Запуск тестов для проверки работоспособности кода с разными версиями Python.
  • Сборка Docker-образов бэкенда и фронтенда.
  • Публикация Docker-образов на DockerHub.

Эти процессы помогают поддерживать качество кода и готовность проекта к развертыванию.

Непрерывная доставка (CD)

GitHub Actions также автоматически выполняет непрерывную доставку (CD) на удаленный сервер после успешного прохождения CI. Этот процесс включает в себя следующие шаги:

  • Копирование файлов Docker Compose и конфигурации на удаленный сервер.
  • Обновление Docker-образов на удаленном сервере с использованием Docker Compose.
  • Применение миграций базы данных.
  • Сборка и развертывание статических файлов.
  • После успешного выполнения этих шагов, проект становится доступным по адресу вашего удаленного сервера.

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

Для настройки CI/CD процессов вам может потребоваться дополнительная конфигурация и настройка секретов для доступа к удаленному серверу и другим конфиденциальным данным.

Следуйте инструкциям выше, чтобы установить и запустить проект "Foodgram", и воспользуйтесь документацией API для взаимодействия с приложением. Если у вас возникнут вопросы или проблемы, не стесняйтесь обращаться за поддержкой.

Приятного использования "Фудграма"! 🍳🍽️

About

Foodgram project template

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages