/yamdb_final

yamdb_final

Primary LanguagePython

Проект API YaMDb

AutoDeploy


Проект API YaMDb реализует API для сбора отзывов пользователей на произведения.


Содержание

О проекте

API YaMDb с Docker - это проектная работа шестнадцатого спринта курса "Python-разработчик" Яндекс.Практикум.

Этот проект реализует API будущего сайта, представляющего собой сервис по работе с произведениями и использует Docker для разделения из запуска сервисов.

Произведения делятся на категории:

  • Книги,
  • Фильмы,
  • Музыка.

Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти. Из пользовательских оценок формируется усреднённая оценка произведения — рейтинг.

Для работы приложения используется docker compose с разделением на три сервера:

  • db - с базой данных;
  • web - с сайтом;
  • nginx - c Nginx.

Для разворачивания проекта на сервере используется GitHub Actions. В процессе CI производится:

  • тестирование;
  • сборка Docker-образа и заливка на DockerHub;
  • деплой на сервер;
  • уведомление в Telegram.

Начало работы

Для работы с проектом необходимо выполнить действия, описанные ниже.

  • Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:iReset/infra_sp2.git
cd infra_sp2/infra

При необходимости заполнить поля в .env-файле актуальными данными.

Запустить docker compose:

docker compose up -d --build

Выполнить формирование статики и базы данных:

docker compose exec web python manage.py collectstatic --no-input
docker compose exec web python manage.py migrate

При необходимости заполнить БД тестовыми данными:

docker compose exec web python manage.py import_data

и создать учетную запись администратора:

docker compose exec web python manage.py createsuperuser

Использование

Для получения документации по API необходимо открыть в браузере адрес http://127.0.0.1/redoc/.

Панель администратора доступна по адресу http://127.0.0.1/admin/.

Боевая версия ограниченное время будет доступна по адресам ireset.ddns.net или 51.250.25.254.

Планы

  • Объединить проект API с бекэндом сайта.
  • Добавить автозапуск на сервере и перезапуск при падении.
  • Добавить тестирование на GitHub при пуше в develop.

Использованные средства и технологии

Авторы

  • iReset — управление пользователями (Auth и Users): система регистрации и аутентификации, права доступа, работа с токеном, система подтверждения через e-mail, Docker, CI, CD
  • HelloAgni — категории (Categories), жанры (Genres) и произведения (Titles): модели, представления и эндпойнты для них
  • Valery-VM — отзывы (Review) и комментарии (Comments): описание моделей, представлений, настройка эндпойнтов, определение прав доступа для запросов, рейтинги произведений

Благодарности

  • Спасибо команде Яндекс.Практикум за создание курса
  • Спасибо наставникам Денису Московченко, Алексею Михайлову и старшему студенту Антону Базуленкову за терпеливые и подробные разъяснения
  • Спасибо куратору Екатерине Чапля за неустанную поддержку и организацию работы
  • Спасибо команде когорты 28 за поддержку и сопровождение
  • Спасибо однокурсникам когорты 28 за дружную команду