{"id":19704916,"url":"https://github.com/lmashik/yamdb_final","last_synced_at":"2026-04-07T21:31:28.608Z","repository":{"id":187051609,"uuid":"601720888","full_name":"lmashik/yamdb_final","owner":"lmashik","description":"Сервис сбора и просмотра отзывов на художественные произведения","archived":false,"fork":false,"pushed_at":"2023-11-08T20:07:43.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-27T17:23:29.819Z","etag":null,"topics":["docker","docker-compose","drf","github-actions","gunicorn","nginx","postgresql","python37"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmashik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-14T17:15:04.000Z","updated_at":"2023-11-08T19:55:07.000Z","dependencies_parsed_at":"2024-11-11T21:26:38.320Z","dependency_job_id":"7b9e97ff-3649-401f-af45-0e1c5613d92b","html_url":"https://github.com/lmashik/yamdb_final","commit_stats":null,"previous_names":["lmashik/yamdb_final"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lmashik/yamdb_final","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Fyamdb_final","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Fyamdb_final/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Fyamdb_final/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Fyamdb_final/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmashik","download_url":"https://codeload.github.com/lmashik/yamdb_final/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Fyamdb_final/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31530641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","drf","github-actions","gunicorn","nginx","postgresql","python37"],"created_at":"2024-11-11T21:25:16.606Z","updated_at":"2026-04-07T21:31:28.588Z","avatar_url":"https://github.com/lmashik.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Проект yamdb_final\n\nСтатус workflow: ![badge](https://github.com/lmashik/yamdb_final/actions/workflows/yamdb_workflow.yml/badge.svg)\n\n----------------------------------------\n## Описание\n\nПроект YaMDb собирает отзывы (Review) пользователей на произведения \n(Title).  \nПроизведения делятся на категории. Список категорий (Category) может \nбыть расширен.  \nСами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм \nили послушать музыку.  \nК каждому произведению можно оставить отзыв и оценку, на основе оценок \nрассчитывается рейтинг.  \nКаждый отзыв может быть прокомментирован.\n\n----------------------------------------\n## Используемые технологии\n\n - Python 3.7\n - Django Rest Framework 3.12.4 (библиотека для преобразования Django-приложения в REST API)\n - Postman (графическая программа для тестирования API)\n - PostgreSQL (система управления базами данных)\n - Docker (программная платформа контейнеризации)\n - Docker Compose (средство для определения и запуска приложений Docker с несколькими контейнерами)\n - Nginx (веб-сервер для статики)\n - Gunicorn (веб WSGI-сервер)\n - GitHub Actions (сервис автоматизации тестирования, размещения и запуска проекта на сервере)\n\n----------------------------------------\n## Установка\n\n1. Клонируем репозиторий и перейти в директорию infra в командной строке\n```bash\ngit clone https://github.com/lmashik/infra_sp2.git\n```\n\n```bash\ncd infra\n```\n\n2. Создаем файл .env для переменных виртуального окружения и заходим в него\n```bash\nnano .env\n```\n\n3. Заполняем файл значениями переменных из файла .env.example\n```\nDB_ENGINE=django.db.backends.postgresql\nDB_NAME=postgres\nPOSTGRES_USER=\u003cusername\u003e\nPOSTGRES_PASSWORD=\u003cpassword\u003e\nDB_HOST=db\nDB_PORT=5432\nSECRET_KEY=\u003csecret_key\u003e\n```\n\n4. Создаем образ и контейнеры, запускаем контейнеры в фоновом режиме\n```bash\nsudo docker-compose up -d\n```\n(Для новых версий docker-compose как плагина к docker\n```bash\nsudo docker compose up -d\n```\n)\n\n5. Выполняем миграции внутри контейнера web\n```bash\nsudo docker-compose exec web python manage.py migrate\n```\nили\n```bash\nsudo docker compose exec web python manage.py migrate\n```\n\n6. Собираем статику\n```bash\nsudo docker-compose exec web python manage.py collectstatic\n```\nили\n```bash\nsudo docker compose exec web python manage.py collectstatic\n```\n\n7. Открываем проект по адресу http://localhost/api/v1  \nили его административную часть по адресу http://localhost/admin/\n\nПри необходимости наполняем базу резервными данными\n8. Узнаем id контейнера (web), в который нужно скопировать дамп\n```bash\nsudo docker ps\n```\n\n9. Копируем дамп в контейнер web\n```bash\nsudo docker cp fixtures.json \u003cCONTAINER_ID\u003e:app/\n```\n\n10. Заливаем данные в базу\n```bash\nsudo docker-compose exec web python manage.py loaddata fixtures.json\n```\nили\n```bash\nsudo docker compose exec web python manage.py loaddata fixtures.json\n```\n\n11. Удаляем дамп из контейнера\n```bash\nsudo docker-compose exec web rm ./fixtures.json\n```\nили\n```bash\nsudo docker compose exec web rm ./fixtures.json\n```\n\n----------------------------------------\n## Примеры запросов к API\n\n### Регистрация\nДля получения кода подтверждения необходимо отправить POST запрос \nк эндпоинту http://\u003chost\u003e/api/v1/auth/signup/, в теле запроса \nуказать:\n\n```\n{\n\"email\": \"user@example.com\",\n\"username\": \"user\"\n}\n```\n\nПри успешном завершении запроса вы получите письмо с кодом подтверждения \n(confirmation_code) на адрес email\n\nДля получения токена необходимо отправить POST запрос к эндпоинту \nhttp://\u003chost\u003e/api/v1/auth/token/, в теле запроса указать:\n\n```\n{\n\"username\": \"user\",\n\"confirmation_code\": \"string\"\n}\n```\n\nПри успешном завершении запроса вы получите в ответ токен:\n\n```\n{\n\"token\": \"string\"\n}\n```\n\n### Формат запросов\nЗапрос осуществляется посредством протокола HTTP 1.1 на адрес, \nсоответствующий ресурсу. HTTP-запросы должны содержать заголовок:\n_Authorization: Bearer \u003caccess_token\u003e_\n\n### Формат ответа\nОтвет сервиса представляет собой JSON-документ в кодировке UTF-8, \nсодержимое зависит от запроса.\n\n### Ресурсы\n\nРесурс - часть системы, с которой можно работать. В YaMDb ресурсами \nявляются: категории, жанры, произведения, отзывы, комментарии, пользователи.\nУ каждого ресурса уникальный URL. Для получения списка доступных ресурсов \nвыполните GET-запрос к корневому URL API http://\u003chost\u003e/api/v1/, \nа также к URL: \nhttp://\u003chost\u003e/api/v1/titles/{title_id}/reviews/ \nи http://\u003chost\u003e/api/v1/titles/{title_id}/reviews/{review_id}/comments/\n\nВозможные ресурсы API:\n\n```\n/api/v1/categories/ (GET, POST)\n\n/api/v1/categories/{slug}/ (DELETE)\n\n/api/v1/genres/ (GET, POST)\n\n/api/v1/genres/{slug}/ (DELETE)\n\n/api/v1/titles/ (GET, POST)\n\n/api/v1/titles/{titles_id}/ (GET, PATCH, DELETE)\n\n/api/v1/titles/{title_id}/reviews/ (GET, POST)\n\n/api/v1/titles/{title_id}/reviews/{review_id}/ (GET, PATCH, DELETE)\n\n/api/v1/titles/{title_id}/reviews/{review_id}/comments/ (GET, POST)\n\n/api/v1/titles/{title_id}/reviews/{review_id}/comments/{comment_id}/ (GET, PATCH, DELETE)\n\n/api/v1/users/ (GET, POST)\n\n/api/v1/{username}/ (GET, PATCH, DELETE)\n\n/api/v1/users/me/ (GET, PATCH)\n```\n\n----------------------------------------\n## Авторы проекта\nАвтор yamdb_final: Мария Лапикова (Михайлова), mashik_p@mail.ru  \nАвторы YaMDb: Шовтюк Елена, Лапикова (Михайлова) Мария, Пиголкин Андрей\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmashik%2Fyamdb_final","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmashik%2Fyamdb_final","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmashik%2Fyamdb_final/lists"}