Продуктовый помощник - «Фудграм»
Проект "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 доступна по адресу http://localhost:8000/api/docs/.
- Здесь вы найдете подробные сведения о каждом эндпоинте, поддерживаемых методах и структуре запросов и ответов.
- Для доступа к большинству функций API, вам потребуется аутентифицироваться. Вы можете зарегистрировать нового пользователя через эндпоинт /api/users/register/. После успешной регистрации вы получите токен доступа, который необходимо передавать в заголовке Authorization для аутентификации в последующих запросах.
- Получение списка рецептов:
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.
Проект "Foodgram" также интегрирован с непрерывной интеграцией (CI) и непрерывной доставкой (CD) с использованием GitHub Actions. Это позволяет автоматизировать процессы тестирования, сборки и развертывания приложения.
Настроенные рабочие процессы GitHub Actions позволяют автоматически выполнять следующие шаги после каждого пуша в репозиторий:
- Запуск тестов для проверки работоспособности кода с разными версиями Python.
- Сборка Docker-образов бэкенда и фронтенда.
- Публикация Docker-образов на DockerHub.
Эти процессы помогают поддерживать качество кода и готовность проекта к развертыванию.
GitHub Actions также автоматически выполняет непрерывную доставку (CD) на удаленный сервер после успешного прохождения CI. Этот процесс включает в себя следующие шаги:
- Копирование файлов Docker Compose и конфигурации на удаленный сервер.
- Обновление Docker-образов на удаленном сервере с использованием Docker Compose.
- Применение миграций базы данных.
- Сборка и развертывание статических файлов.
- После успешного выполнения этих шагов, проект становится доступным по адресу вашего удаленного сервера.
Эти шаги позволяют автоматизировать процесс развертывания и обновления вашего приложения, обеспечивая стабильную и надежную работу.
Для настройки CI/CD процессов вам может потребоваться дополнительная конфигурация и настройка секретов для доступа к удаленному серверу и другим конфиденциальным данным.
Следуйте инструкциям выше, чтобы установить и запустить проект "Foodgram", и воспользуйтесь документацией API для взаимодействия с приложением. Если у вас возникнут вопросы или проблемы, не стесняйтесь обращаться за поддержкой.
Приятного использования "Фудграма"! 🍳🍽️