В этом приложении реализовано добавление, и возможность перемещение фигур на холсте.
Shape Editor построен на классической архитектуре React-а. Сборщик проекта Vite. Фигуры располагаются на Canvas. Используется React Context для избежания проброса пропсов. Данное приложение выполнено с возмоностью простой масштабируемости и т.о. комопнент ShapeFactory отвечает за создание фигур и вся логика работы с фигурами заключена в нём. Холст (CanvasWindow) только принимает любое количество фигур и торисовывает их. Для улучшения производительости компонент CanvasWindow использует мемоизацию React.memo, а фигуры при создании получают уникальный id, что позволяет реакту идентифицировать только новые фигуры и не перерисовывать уже имеющиеся.
Типизация фигур завязана на моковый объект данных и все возможные типы фигур читаются из этого файла. Это позволяет не думать о возможных типах, которые могут добавится при масштабировании.