Склонируйте репозиторий в нужную вам директорию.
Перейдите в директорию с проектом и в командной строке выполните sudo npm install для установки всех необходимых
зависимостей. Это может занять некоторое время, которое зависит от скорости вашего интернета.
Для запуска в режиме разработчика необходимо выполнить команду npm run dev-server
Для подготовки приложения к разворачиванию необходимо выполнить команду npm run build.
После этого в корневой папке проекта появится папка target. Там будут все необходимые для рабты файлы.
Корневым файлом html является index.html.
Для удобства разворачивания есть Docker контейнер и подготовленный docker-compose.
В корневой директории проекта надо выполнить последовательно две команды: docker-compose build и docker-compose up.
После этого контейнер соберётся и будет запущен.
Проект на писан с использованием Redux и immutableJS. Вся собрка производится при помощи Webpack.
При работе с Redux store важно помнить про ImmutableJS и не пытаться сделать так unitID: store.stages.unit.unit_internal_id.
А делать так unitID: store.stages.getIn(['unit', 'unit_internal_id']}.
Если не понимаешь как работает ImmutableJS, то stagesReducer лучше не трогать.
Все имеющиеся файлы конфигурации находятся в файле .env.
Файл этапов производства находится в папке /configs и называется pages.csv.
Все данные redux store хранятся в src/reducers. Основной файл компоновки и импорта store - src/reducers/main.js.
В файле src/reducers.common.js хранятся типы запросов к store (см. types в файле common.js),
fetchWrapper и axiosWrapper. Эти две функции выполняют все запросы к бэку и работают корректно. Туда лезть
вообще не надо. Функция reportError существует для удобства разработки и отлова ошибок с redux store.
Все записи в store производятся в src/reducers/stagesReducer.js.
Все запросы к бэку и store обрабатываются в src/reducers/stagesActions.js
Для перевода используется модуль i18next и самописный загрузчик для переводов из .csv. Переводы
хранятся в /public/translation.csv. Первую строку этого файла, нельзя изменять без изменений в i18next.js!
Цветовая палитра лежит в файле src/index.scss.
Всё заполнение подгружается в App.js в зависимости от состояния store и pathname. Pathname
будет динамически меняться в процессе работы, но это не даёт возможности свободно перемещаться
по этапам, так как восстановление сессии вернёт пользователя на текущий этап производства, если оно идёт.
Большая часть логики лежит в Composition.js. Трогать с осторожность и с полным пониманием как оно работает.
Компонента с заглушкой и опросом сервера на наличие авторизации пользователя.
Компонента для хранения части логики работы перемещения по страницам и шапки страницы.
Компонента с минимумом логики и двумя кнопками для начала сборки и завершения сессии.
Компонента с самым большим количеством логики. Переход по этапам сборки проихводится именно тут.
Компонента для отображения всплывающих уведомлений.
Компонента для отображения секундомеров для каждого этапа производства.