Сначала устанавливаем библиотеки проекта из каталога constructor-man npm install
Возможно, понадобится поправить путь в docker-compose.yml в параметре volumes: (первая строчка из значений)
Стартуем докер из каталога с файлом docker-compose.yml docker-compose up
При старте в БД будут залиты какие-мои данные, уже что-то.
Стартуем приложение из каталога constructor-man npm run start
Комментарии по задачам:
Swagger подключен, доступен по пути http://localhost:3000/api
e2e тесты упали, как только появились модули, позже могу разобраться что им нужно, чтобы видеть друг друга :)
Обеспечение произвольного набора полей не делал, но это совсем несложно. В Тип добавляем хоть текстовое под JSON, с описанием списка полей (имя, тип, ограничения и прочее что нужно, так было сделано в другой моей системе, в справочниках вообще очень удобная штука), а уже объекты (компоненты) хранят свои значения в поле properties, тоже можно сериализовать в JSON.
Контроль вложенности во избежание вставки компонента "самого в себя", а также зацикливаний сделано. При этом Компонент можно воткнуть в другой один раз, так как в базе уже находятся подчинённые связи с этим компонентом.
При формировании дерева компонентов Изделия удалял свойства лишние свойста, чтобы не было зацикливаний и Дерево выглядело лаконично, Frontend нормально его подцепит и отобразит.
В целом проект интересный, руки уже чесались делать интерфейс к нему, но удержался, а для формирования HTTP-запросов использовал Postman
У меня есть замечания к себе по коду, но в ходе обрастания наработками узнаются новые приёмы и стилистика совершенствуется, плюс имеющиеся практики в проекте, команде, компании...