Loading repository data…
Loading repository data…
Mortifertis / repository
Учебный сервис рецептов на Django REST Framework: REST API, PostgreSQL, Docker, Nginx и GitHub Actions CI/CD. Frontend предоставлен учебным шаблоном.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Foodgram — учебный веб-сервис, где пользователи публикуют рецепты, добавляют их в избранное, подписываются на авторов и формируют список покупок по выбранным блюдам.
Проект выполнен как учебная выпускная работа курса Python-разработчика.
Моя зона ответственности: backend-часть проекта, REST API, модели данных, сериализаторы, viewsets, permissions, фильтрация, работа с избранным, списком покупок, подписками, короткими ссылками, загрузкой изображений, Docker Compose и CI/CD через GitHub Actions.
Frontend был предоставлен как часть учебного проекта. Я интегрировал его с backend API и инфраструктурой запуска, но не позиционирую frontend-код как полностью авторскую работу.
collectstatic при деплоеингредиент + единица измерения, уникальность рецепта у автора, запрет дублей ингредиентов в
рецепте, избранном и списке покупок.collectstatic, healthcheck gateway и
Telegram-уведомление.foodgram/
├── backend/ # Django backend и REST API
│ ├── api/ # serializers, viewsets, filters, permissions
│ ├── foodgram_backend/ # settings, urls, wsgi/asgi
│ ├── recipes/ # модели и бизнес-логика рецептов
│ └── users/ # кастомный пользователь и подписки
├── frontend/ # React frontend
├── nginx/ # Dockerfile и конфигурация gateway
├── infra/ # дополнительная nginx/compose-конфигурация
├── data/ # демо-данные ингредиентов и тегов
├── docs/ # OpenAPI-схема, Redoc и материалы документации
├── docker-compose.yml # локальный запуск
└── docker-compose.production.yml
git clone https://github.com/Mortifertis/foodgram.git
cd foodgram
.envcp .env.example .env
При необходимости измените значения в .env: домены, пароли, настройки
PostgreSQL и флаги безопасности cookie.
docker compose up --build
После запуска приложение будет доступно локально:
docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py collectstatic --noinput
docker compose exec backend python manage.py createsuperuser
docker compose exec backend python manage.py load_tags
docker compose exec backend python manage.py load_ingredients
Документация API доступна через Redoc:
/api/docs/
Основные группы эндпоинтов:
/api/users/ — пользователи;/api/auth/token/login/ — получение токена;/api/auth/token/logout/ — удаление токена;/api/recipes/ — рецепты;/api/recipes/{id}/favorite/ — избранное;/api/recipes/{id}/shopping_cart/ — список покупок;/api/recipes/download_shopping_cart/ — скачивание списка ингредиентов;/api/users/subscriptions/ — подписки;/api/ingredients/ — ингредиенты;/api/tags/ — теги.OpenAPI-схема хранится в docs/openapi-schema.yml, статическая Redoc-страница
— в docs/redoc.html.
Локально backend можно проверить так:
python -m pip install -r backend/requirements.txt
flake8 backend/
cd backend && python manage.py test -v 2
В CI эти проверки запускаются автоматически перед сборкой Docker-образов.
Workflow GitHub Actions выполняет полный цикл проверки и деплоя:
flake8 backend/;python manage.py test -v 2;Пример переменных находится в .env.example. Для локального запуска достаточно
скопировать его в .env и при необходимости заменить значения.
Ключевые переменные:
SECRET_KEY — секретный ключ Django;DEBUG — режим отладки;ALLOWED_HOSTS — разрешенные хосты Django;CSRF_TRUSTED_ORIGINS — доверенные origin для CSRF;POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD — параметры PostgreSQL;DB_HOST, DB_PORT — адрес и порт базы данных;SESSION_COOKIE_SECURE, CSRF_COOKIE_SECURE — security-флаги cookie.Проект готов к локальному запуску и демонстрирует backend-сервис с полноценным циклом разработки и деплоя: REST API, PostgreSQL, Docker, Nginx и CI/CD.
Потенциальное следующее улучшение — разделить dev/prod-настройки Django и
сделать production-режим строже: обязательный SECRET_KEY без fallback и
wildcard-хосты только для локальной разработки.