YaMDb собирает отзывы пользователей на произведения (Titles). Произведения делятся на категории (Category): «Книги», «Фильмы», «Музыка». Сами произведения в YaMDb не хранятся: нельзя посмотреть фильм или послушать музыку. Произведению может быть присвоен жанр (Genre) из списка предустановленных (например «Сказка», «Рок» или «Артхаус»). Новые произведения может добавлять только администратор, он же может расширять список категорий и жанров. Пользователи оставляют к произведениям текстовые отзывы (Review) и ставят оценку в диапазоне от одного до десяти (целое число); из оценок формируется усреднённая оценка — рейтинг. На одно произведение пользователь может оставить только один отзыв.
Для приложения настроен Continuous Integration (CI) и Continuous Deployment (CD).
- Евгения Воропай | jeniavoropay
- Владимир Васильев | chem1sto
- Павел Вервейн | hive937
- Python 3.10
- Django 2.2.16
- Django Rest Framework 3.12.4
- Gunicorn 20.0.4
- Nginx
- Postgres
- Docker 20.10.23
- Docker Compose 2.15.1
-
Клонируйте репозиторий:
git clone git@github.com:chem1sto/yamdb_final.git
-
Перейдите в него в командной строке:
cd yamdb_final/
-
Создайте и активируйте виртуальное окружение:
python3 -m venv venv
. venv/bin/activate
-
Обновите систему управления пакетами pip:
python3 -m pip install --upgrade pip
-
Перейдите в папку api_yamdb и установите зависимости из файла requirements.txt
cd api_yamdb
pip install -r requirements.txt
-
Перейдите в директорию infra:
cd cd ../infra/
-
Создайте файл .env с переменными окружения:
touch .env
nano .env
SECRET_KEY='<secret_key>' # стандартный ключ, который создается при старте проекта PROD_FLAG=True # опция отладчика True/False ALLOWED_HOSTS=['*'] # список хостов/доменов, для которых доступен текущий проект ENGINE=django.db.backends.postgresql # используемый движок Postgres для работы базы данных DB_NAME=postgres # имя БД - postgres (по умолчанию) POSTGRES_USER=postgres # логин для подключения к БД - postgres (по умолчанию) POSTGRES_PASSWORD=password # пароль для подключения к БД (установите свой) DB_HOST=db # название сервиса (контейнера) DB_PORT=5432 # порт для подключения к БД
-
Перейдите на уровень выше и запустите pytest:
cd ..
pytest
-
При push в ветку main автоматически отрабатывают сценарии:
- Test Project - проверка кода на соответствие стандарту PEP8 и запуск pytest. Дальнейшие шаги выполняются, только если push был выполнен в ветку main;
- Push Docker image to Docker Hub - сборка и доставка докер-образов на DockerHub
- Deploy on Server - автоматический деплой проекта на боевой сервер. Выполняется копирование файлов из DockerHub на сервер;
- Send message to Telegram - отправка уведомления в Telegram.
-
После успешного деплоя доступно создание суперпользователя:
docker-compose exec web python manage.py createsuperuser
Доступен по ссылке chem1sto-server