The first builder iteration should have following UI elements
- Read node definition from file
- List of available nodes
- Drag nodes to a canvas and connect them as a workflow
- Configure each node with parameters
- Output a workflow file
The software stack should produce app which:
- can run as static website or as a desktop app
- can be embedded within a bigger app (vre)
- can be developed on Windows/Mac/Linux
- uses mature/stable dependencies
- React
CRAtoo slow- Vite
Use desktop oriented framework
- ant.design
- blueprint
- Bootstrap 4 <- chosen because it is default in react-json-schema-form
- Awesome fonts
- Bootstrap icons <- chosen because no paid tiers and already using bootstrap for UI
- Ionic icons
- Octicons
- hooks
- redux
- recoil <- chosen for its simplicity
- mobx
- eslint
- standard <- chosen for its simplicity, but dont agree with some of its rules like
explicit-function-return-type
and weak autofixer
- Typescript
Jestrequires lots of fiddling- vitest, similar api as jest, wip
- vite-jest, connects vite compiler machinery to jest, wip
- Storybook
- Prettier
- Standard
- cypress
See https://github.com/toml-lang/toml/wiki
- @ltd/j-toml
Bundle workflow file and data files into an archive file.
- @zip.js/zip.js
Save to disk
- file-saver
- ~ https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API ~ not supported on Firefox
- ngl/parser/pdb-parser http://nglviewer.org/ngl/api/class/src/parser/pdb-parser.js~PdbParser.html
Drag step from catalog to workflow visualization Should place nice with workflow viz library.
react-beautiful-dndNo longer activly maintained- react-dnd
react-dragulaNo longer activly maintained- react-draggable
- electron with https://www.electronforge.io/ or electron-builder
- tauri, https://tauri.studio/en/
Workflow parameters can be URLs to files on local disk.
- https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API
- https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API
- react-syntax-highlighter with prismjs
- ajv, to validate data against JSON schema
typebox, to validate data against Typescript typeWanted to use for validating catalog, but catalog contains JSON schema of itself, typebox does not handle this nesting
- react-toastify
react-hot-toastnot chosen because fewer users, however does seem to be more active currently
- https://github.com/rjsf-team/react-jsonschema-form
https://jsonforms.io/no native file upload support