Прототипирование графового редактора (node editor) в вебе

1 800 руб.за час
17 мая 2020, 15:58 • 11 откликов • 50 просмотров
Требуется создать основу графового редактора (node editor) в вебе для
создания средства графического программирования в следующих
парадигмах:
- вычислительные графы;
- конечные автоматы (state diagram);
- сетевые топологии (через концентраторы, шины);
- и ряд др.
(подробности в полном ТЗ)

(для взаимопонимания рекомендую прогуглить картинки по каждой из категорий.
Сторонние примеры аналоги по логике работы: Blueprints в unreal engine 4 , Node editor в Blender, 3dmax.)

Начинаем с создания основы редактора, которая путем конфигурирования должна давать требуемый UX в каждом конкретном случае из списка выше, формируя конкретный Инструмент.

Мы видим, что такой унификации можно достичь, реализовав JSON конфигурируемыми (по поведению и по внешнему виду) следующие вещи:
1. Узлы графа (nodes).
2. Ребра графа (edges).
3. Политику отрисовки и редактирования графа.
(подробности в полном ТЗ)

Backend будет давать:
1. Конфигурацию графвого представления для конкретного Инструмента (перечень выше)
2. Конфигцрацию допустимого набора узлов внутри конкретного Инструмента
(например разные типы узлов вычислительной сети или операций на вычислительном графе)
3. Конфигурацию конкретного дизайна внутри отдельно взятого Инструмента
(узлы расставленные по координатам, параметры узлов, подключения и координаты ребер и их параметры).

Примеры библиотек, что дают хорошую основу (как нам кажется):
- https://github.com/projectstorm/react-diagrams
- https://github.com/newcat/baklavajs

Библиотек довольно много, жесткой привязки нет.

Проект обещает быть навороченным, поэтому планируем использовать typescript.

Только современные браузеры. Фокус под хром.
Мобильная версия, возможно, в будущем, в виде приложения.

От коллеги, кто возьмется нам помочь требуется хорошая мат подготовка (наличие IT образования или опыта решения задач на графах), поставленное объектно-ориентированное,
а в идеале, системно-инженерное мышление (может выражаться в умении коммуницировать через UML).

Этапность, сроки, приоритеты по функцональности - обсудим в процессе.


Scrum, gitlab/jetbrains.space