I have been doing this for awhile as my side project. I have JavaScript frontend (react) communicating with a rust backend. The rust backend loads Dlls which provide functionality to the JavaScript. The idea is that the graphs will be useful for multiple things by loading different Dlls. For instance, in one case a graph may represent a build system, in another it may represent some logic in a game, and in yet another it may represent some components hooked up to a microcontroller. The backend can also be run as a command line interface and supports a small built-in lisp interpreter allowing developers to automate common tasks or debug.
I've seen some attempts before but they sucked for one reason or another.