cd backup
npm i
npm run dev
Graphs are cool. They let us represent ideas as webs of complex relationships and intricate behavior. Sometimes, we wish we could develop our code in this kind of idea web, linking functions to each other in a graphical way.
To address this issue, we came up with Blackbox Studio, a tool that helps you form this complex web of functionality.
BlackBox Studio has three main goals:
- Isolate functions into black boxes, with input and output interfaces.
- Communicate between functions.
- Build a graph view of information flow between functions.
We built our service in two separate servers:
- Front-end graph interface (built in ReactJS & react-flow)
- Custom nodes, connections, and actions on each interaction between nodes.
- Lots of manual styling
- Special themes
- Back-end functionality and function interfaces (built in Rust Actix)
- Custom serialization protocols
- Internal data type management
- Value propagation through stored DAG
- Process spawning
- Interprocess Communication
- Learning to fight with default styling
- JSON parsing errors during backend graph crawling
- Interlanguage communication
- Gorgeous graph interface
- Snappy function I/O
- Super Secret Settings
We learned that interacting between servers is never easy. From problems in running both, to running them at the same time, to finally having them talk to each other, we encountered countless difficulties.
Apart from minor visual touch ups, some useful features for the future include:
- Code editing inside. This is not an intended main goal, since everyone has a favorite editor.
- D3-Force implementation: adding physics simulation to make the graph interface feel more intuitive.
- Packaging into electron. Currently, it is a web-based studio.
- Minimizing the menus
- Finalizing inter-language communication