Необходимо поднять инфраструктуру сервисов, используя docker и docker-compose. Фронтом для приложения должен быть nginx.
Фактически, нужно, чтобы для запуска всего приложения можно было выполнить одну команду
docker-compose -f docker-compose.yaml up
на любом окружении.
- api - nodejs backend, предоставляющий API для фронтенда
- frontend - reactjs приложение
- html - отрендеренные html страницы frontend'а
-
При запросе страницы сайта необходимо отдавать отрендеренную статическую страницу, если её нет - то отдавать в браузер react'овский фронтенд При запросе / - html/main.html /about - html/about.html /catalog - html/catalog/index.html /catalog?id=X - html/catalog/X.html /product/X - html/product/productX.html
-
Редиректы:
- Для страниц
/catalog
необходимо на уровне nginx'а настроить 301 редирект для этого типа урлов с/catalog/:id
/catalog/5a26df2f-8ebd-47bd-8890-53b543247d33 => /catalog?id=5a26df2f-8ebd-47bd-8890-53b543247d33
- Для страниц
/product/:id,
при id, не являющимся числом должен быть внутренний редирект на not-found.html
- Для страниц
-
Страницы сайта должны быть защищены Content Security Policy, с запретом на добавление любых скриптов, в том числе inline'овых.
-
На все страницы сайта (и html и react) необходимо добавить inline-скрипт
<script>console.log('trusted inline-script')</script>
, установленный с помощью атрибута CSP nonce
-
В бэкенд при запросах должен передаваться исходный IP-адрес устройства, с которого был совершён запрос.
-
Настроить workflow на github'е (по добавлению тега версии), который будет собирать все образы инфраструктуры и деплоить их на dockerhub или в репозиторий github'а
-
Запросы (при вводе адреса вручную) на все несуществующие страницы должны отдавать 404
-
Поддержка https
-
Разворот сервисов в kubernetes
Все параметры в сервисы передаются с помощью переменных окружения
- api: запускается командой yarn start
env:
PORT
- порт, на котором будет запущен бэкенд, по умолчанию 3000. deps: перед сборкой/запуском установить зависимости с помощью командыyarn install
- frontend: в папке есть файл README.md с инструкцией по сборке и запуску
env:
REACT_APP_API
- домен api бэкенда deps: перед сборкой/запуском установить зависимости с помощью командыyarn install
Например, для запуска на локальной машине необходимо сделать:
cd backend/ && PORT=3001 yarn start
cd frontend/ && REACT_APP_API=http://localhost:3001 yarn start