Данный проект содержит в себе полноценный сервис, который позволяет людям делиться рецептами, смотреть рецепты других людей, добавлять их в избранное, в список покупок, скачивать список ингредиентов для покупки, подписываться на понравившихся авторов.
В проекте присутствует:
- Полноценный SPA в качестве фронтенда;
- API-бэкенд;
- Инфраструктурные скрипты, позволяющие быстро развернуть проект на сервере;
- Документация;
- 100% покрытие API тестами.
Подробнее обо всем об этом в следующем разделе.
В проекте используются следующие технологии:
- В качестве фронтенда выступает одностраничное приложение на фреймворке
React
, которое взаимодействует с бэкенд-API. - В качестве бэкенда выступает API-приложение, которое написано с использованием
python
веб-фреймворкаDjango Rest Framework
. Фронтенд уже настроен на использование данного API, кроме того, данное API можно использовать для работы с другими сервисами, например его можно интегрировать в различные чат-боты, либо в мобильное приложение. Подробнее см. раздел с документацией. - Все приложения в сервисе готовы к работе в
docker-контейнерах
. Подробнее см. раздел с установкой. - Настроено CI CD с автоматическими unittest и деплоем на сервер с помощью
github actions
.
Илья Малашенко (github: melax08, telegram: @ScreamOFF)
Проект автоматически разворачивается на боевом сервере через github actions. Настроить под себя можно в файле .github/workflows/recipes-workflow.yml
Инструкция по ручной установке на сервер:
- Клонируем репозиторий с проектом на удаленном сервере:
git clone https://github.com/melax08/recipes_site.git
- Переходим в каталог с инфраструктурными скриптами:
cd recipes_site/infra
- Заполняем файл
.env
в соответствии с примером:
mv .env_example .env
nano .env
-
В файле
nginx.conf
указываем домен или IP (или и то и другое) для вашего сайта в секцииserver_name
. -
Запускаем
docker-compose
(должен быть предварительно установлен на сервере):
sudo docker-compose up -d
или
docker compose up -d
После запуска проекта, API-документация будет доступа по адресу: http:https://127.0.0.1/api/docs/
Вместо 127.0.0.1 - нужно подставить домен или IP вашего сайта.