{"id":15192113,"url":"https://github.com/lmashik/foodgram-project-react","last_synced_at":"2026-03-05T13:03:43.778Z","repository":{"id":187051440,"uuid":"604089964","full_name":"lmashik/foodgram-project-react","owner":"lmashik","description":"Сервис для создания и просмотра рецептов блюд","archived":false,"fork":false,"pushed_at":"2023-11-08T20:08:04.000Z","size":598,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-28T12:39:44.543Z","etag":null,"topics":["djoser","docker","dockercompose","drf","github-actions","gunicorn","nginx","postgresql","python37","reportlab"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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-20T10:08:20.000Z","updated_at":"2023-11-08T19:53:21.000Z","dependencies_parsed_at":"2024-09-18T18:02:37.419Z","dependency_job_id":"26c8ece5-54f1-49db-ba2e-d3b2b3f2bd6b","html_url":"https://github.com/lmashik/foodgram-project-react","commit_stats":{"total_commits":95,"total_committers":2,"mean_commits":47.5,"dds":"0.052631578947368474","last_synced_commit":"21c071c2ae00a5de4ef0f056e42be7cfc077c215"},"previous_names":["lmashik/foodgram-project-react"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lmashik/foodgram-project-react","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Ffoodgram-project-react","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Ffoodgram-project-react/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Ffoodgram-project-react/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Ffoodgram-project-react/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmashik","download_url":"https://codeload.github.com/lmashik/foodgram-project-react/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmashik%2Ffoodgram-project-react/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30127218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T12:40:50.676Z","status":"ssl_error","status_checked_at":"2026-03-05T12:39:32.209Z","response_time":93,"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":["djoser","docker","dockercompose","drf","github-actions","gunicorn","nginx","postgresql","python37","reportlab"],"created_at":"2024-09-27T21:05:07.709Z","updated_at":"2026-03-05T13:03:43.745Z","avatar_url":"https://github.com/lmashik.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Foodgram\n\n-------------------------------\n## Описание\n\nFoodgram - онлайн-сервис, позволяющий просматривать и создавать рецепты \nблюд, подписываться на любимых авторов, добавлять рецепты в избранное и \nсписок покупок.\n\n-------------------------------\n## Используемые технологии\n\n- Python 3.7\n- Django Rest Framework 3.2.18\n- Djoser 2.1.0\n- Reportlab 3.6.12\n- Postman (графическая программа для тестирования API)\n- PostgreSQL (система управления базами данных)\n- Docker (программная платформа контейнеризации)\n- Docker Compose (средство для определения и запуска приложений Docker с несколькими контейнерами)\n- Nginx (веб-сервер для статики)\n- Gunicorn (веб WSGI-сервер)\n- GitHub Actions (сервис автоматизации тестирования, размещения и запуска проекта на сервере)\n\n-------------------------------\n\n## Запуск проекта в контейнерах на своем сервере\n\n1. Клонируйте репозиторий и перейдите в директорию infra в командной строке\n```bash\ngit clone https://github.com/lmashik/foodgram-project-react.git\n```\n\n```bash\ncd infra/\n```\n2. В nginx.conf поменяйте IP-адрес и/или домен на свой \n\n3. Cоздайте файл .env для переменных виртуального окружения \nи заполните его по образцу\n```bash\nnano .env\n```\n\n    DB_ENGINE=django.db.backends.postgresql\n    DB_NAME=postgres\n    POSTGRES_USER=\u003cusername\u003e\n    POSTGRES_PASSWORD=\u003cpassword\u003e\n    DB_HOST=db\n    DB_PORT=5432\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. Примените миграции внутри контейнера backend\n```bash\nsudo docker-compose exec backend python manage.py migrate\n```\nили\n```bash\nsudo docker compose exec backend python manage.py migrate\n```\n\n6. Соберите статику\n```bash\nsudo docker-compose exec backend python manage.py collectstatic\n```\nили\n```bash\nsudo docker compose exec backend python manage.py collectstatic\n```\n\nПроект будет доступен по адресу http://localhost/  \nАдминистративная часть — по адресу http://localhost/admin/ \nДля доступа в административную часть создайте суперпользователя\n```bash\nsudo docker-compose exec backend python manage.py createsuperuser\n```\nили\n```bash\nsudo docker compose exec backend python manage.py createsuperuser\n```\n\nДокументация к API — по адресу http://localhost/api/docs/redoc.html\n\nДля полноценного использования функционала, связанного с рецептами, \nнеобходимо начать с добавления тегов и ингредиентов в базу, \nтак как рецепты не могут быть созданы без них. \nТеги можно добавить через административную часть сервиса, а для \nдобавления ингредиентов подготовлена информация в csv-формате, которую \nможно добавить в базу с помощью команды\n\n```bash\nsudo docker-compose exec backend python manage.py loadingredients_csv\n```\nили\n```bash\nsudo docker compose exec backend python manage.py loadingredients_csv\n```\n\n-------------------------------\n\n## API\n\n### Запуск\n\nСервис Foodgram реализован через взаимодействие с API. \nДля запуска backend-части (API Foodgram) проекта:\n\n1. Перейдите в директорию backend, создайте и активируйте виртуальное \nокружение\n\n```bash\ncd ../backend\n```\n\n```bash\npython3 -m venv env\n```\n\n* Если у вас Linux/macOS\n\n    ```bash\n    source env/bin/activate\n    ```\n\n* Если у вас windows\n\n    ```bash\n    source env/scripts/activate\n    ```\n\n2. Обновите pip до последней версии\n```bash\npython3 -m pip install --upgrade pip\n```\n\n3. Установите зависимости из файла requirements.txt\n```bash\npip install -r requirements.txt\n```\n\n4. Выполните миграции\n```bash\npython3 manage.py migrate\n```\n\n5. Запустите проект\n```bash\npython3 manage.py runserver\n```\n\n### Регистрация\n\nДля регистрации необходимо отправить POST запрос к эндпоинту \nhttp://127.0.0.1:8000/api/users/, передав в теле запроса:\n\n```json\n{\n  \"username\": \"vasya.pupkin\",\n  \"password\": \"Qwerty123\",\n  \"first_name\": \"Вася\",\n  \"last_name\": \"Пупкин\",\n  \"email\": \"vpupkin@yandex.ru\"\n}\n```\n\n### Token\n\n#### Получение Token\nДля получения токена необходимо отправить POST запрос к эндпоинту \nhttp://127.0.0.1:8000/api/auth/token/login/, передав в теле запроса:\n\n```json\n{\n  \"password\": \"Qwerty123\",\n  \"email\": \"vpupkin@yandex.ru\"\n}\n```\n\nПри успешном завершении запроса вы получите ответ в формате JSON. \nПример ответа на запрос получения токена:\n\n```json\n{\n    \"auth_token\": \"123e7f1736546f36cfaa231efe691233e7e01b2b\"\n}\n```\n\n\n### Запросы и ответы\n\n#### Формат запроса\nЗапрос осуществляется посредством протокола HTTP 1.1 на адрес, \nсоответствующий ресурсу. HTTP-запросы должны содержать заголовок:\n_Authorization: Token \u003ctoken\u003e_\n\n#### Формат ответа\nОтвет сервиса представляет собой JSON-документ в кодировке UTF-8, \nсодержимое зависит от запроса.\n\nПример ответа в случае успешного выполнения запроса одного из рецептов \nна эндпоинт http://127.0.0.1:8000/api/recipes/1/:\n\n_HTTP 1.1 200 OK_\n```json\n{\n    \"id\": 30,\n    \"tags\": [\n        {\n            \"id\": 3,\n            \"name\": \"ПП\",\n            \"colour\": \"#E26C2A\",\n            \"slug\": \"pp\"\n        }\n    ],\n    \"author\": {\n        \"id\": 3,\n        \"username\": \"romashka\",\n        \"email\": \"romashka@test.test\",\n        \"first_name\": \"Анатолий\",\n        \"last_name\": \"Иванов\",\n        \"is_subscribed\": false\n    },\n    \"ingredients\": [\n        {\n            \"id\": 1,\n            \"name\": \"Картошка\",\n            \"measurement_unit\": \"кг\",\n            \"amount\": 4\n        }\n    ],\n    \"is_favorited\": false,\n    \"is_in_shopping_cart\": false,\n    \"name\": \"Оливье\",\n    \"image\": \"http://127.0.0.1:8000/media/11.jpg\",\n    \"text\": \"все смешать\",\n    \"cooking_time\": 4\n}\n```\n\n### Ресурсы\n\nРесурс - часть системы, с которой можно работать. В Foodgram \nресурсами являются: пользователи, теги, ингредиенты, рецепты, \nрецепты избранного, рецепты списка покупок, любимые авторы (подписки).\n\n```\n/api/users/ (GET, POST)\n\n/api/users/\u003cuser_id\u003e/ (GET)\n\n/api/users/me/ (GET)\n\n/api/users/set_password/ (POST)\n\n/api/users/subscriptions/ (GET)\n\n/api/tags/ (GET)\n\n/api/tags/\u003ctag_id\u003e/ (GET)\n\n/api/ingredients/ (GET)\n\n/api/ingredients/\u003cingredient_id\u003e/ (GET)\n\n/api/recipes/ (GET, POST)\n\n/api/recipes/\u003crecipes_id\u003e/ (GET, PATCH, DELETE)\n\n/api/recipes/favorites/ (GET)\n\n/api/recipes/download_shopping_cart/ (GET)\n```\n\nДля полноценного использования функционала, связанного с рецептами, \nнеобходимо начать с добавления тегов и ингредиентов в базу, \nтак как рецепты не могут быть созданы без них. \nТеги можно добавить через административную часть сервиса, а для \nдобавления ингредиентов подготовлена информация в csv-формате, которую \nможно добавить в базу с помощью команды\n\n```bash\npython3 manage.py loadingredients_csv\n```\nиз директории с manage.py (backend)\n\n-------------------------------\n\n## Автор\n\nМария Лапикова  \nmashik_p@mail.ru\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmashik%2Ffoodgram-project-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmashik%2Ffoodgram-project-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmashik%2Ffoodgram-project-react/lists"}