Платформа для публикации рецептов
О проекте
Разработал и вывел в production веб-платформу для публикации и управления рецептами с REST API на Django REST Framework и SPA-клиентом на React. Пользователи могут создавать рецепты, подписываться на авторов, сохранять рецепты в избранное и формировать агрегированные списки покупок на основе выбранных блюд.
Проект реализован как полноценное клиент-серверное приложение с контейнеризированной инфраструктурой, автоматизированным тестированием и CI/CD-процессом доставки изменений.
Решение
Спроектирована система взаимосвязанных сущностей для управления рецептами, ингредиентами, тегами, подписками пользователей, избранным и списками покупок.
Реализованы:
- публикация и редактирование рецептов;
- регистрация и аутентификация пользователей;
- управление профилем и аватаром;
- подписки на авторов;
- избранные рецепты;
- персональный список покупок;
- генерация файла со сводным списком ингредиентов;
- фильтрация рецептов по тегам;
- короткие ссылки на рецепты;
- документированный REST API.
Реализация
Backend
- Python 3.12
- Django 5.1
- Django REST Framework
- PostgreSQL
- Djoser
- JWT Authentication
- Django Filters
- ViewSets и Custom Actions
- REST API Architecture
Разработан REST API для взаимодействия с React SPA, включающий CRUD-операции для рецептов, управление подписками, избранным и списками покупок.
Отдельное внимание уделено реализации бизнес-логики агрегирования ингредиентов через ORM-запросы, что позволило автоматически формировать консолидированный список покупок для нескольких рецептов и исключить дублирование ингредиентов.
Frontend Integration
Интегрирован SPA-клиент на React с использованием REST API и JWT-аутентификации.
Реализован обмен данными между клиентом и сервером без перезагрузки страниц, что обеспечило удобный пользовательский опыт и быструю работу интерфейса.
DevOps и инфраструктура
Production-инфраструктура развернута в Docker-окружении с разделением сервисов по контейнерам:
- Backend (Django);
- Frontend (React);
- PostgreSQL;
- Nginx Reverse Proxy.
Дополнительно реализованы:
- Gunicorn в качестве WSGI-сервера;
- автоматическая сборка Docker-образов;
- публикация образов в Docker Hub;
- автоматический деплой на удалённый сервер через SSH;
- конфигурация через переменные окружения.
CI/CD и качество
Настроен полный цикл автоматической доставки приложения через GitHub Actions:
- запуск линтеров при каждом push;
- автоматическое тестирование backend;
- сборка Docker-образов;
- публикация образов в Docker Hub;
- автоматический деплой на production-сервер;
- уведомления о завершении деплоя в Telegram.
Для контроля качества использованы Django Test Framework и автоматический запуск тестов в CI pipeline.
Безопасность
Реализованы:
- JWT-аутентификация;
- разграничение прав доступа пользователей;
- защита пользовательских данных;
- управление секретами через GitHub Secrets и переменные окружения;
- изоляция сервисов через Docker-контейнеры.
Результаты
- Разработан REST API для полноценного взаимодействия React SPA с backend-приложением.
- Реализован механизм подписок, избранного и персонализированных списков покупок.
- Автоматизирован процесс сборки, тестирования и доставки приложения через CI/CD.
- Сокращено время выпуска новых версий за счёт полностью автоматизированного деплоя.
- Обеспечена масштабируемая контейнерная инфраструктура для дальнейшего развития проекта.
- Реализован полный цикл разработки: от проектирования API и бизнес-логики до настройки production-среды и эксплуатации.