# signalcraft

> A tiny visual programming language.

Latest version **1.0.4** (published 2023-12-09) · ISC license · 0 weekly downloads

## Install

```sh
npm install signalcraft
pnpm add signalcraft
yarn add signalcraft
bun add signalcraft
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2023-12-09 |
| First published | 2023-11-12 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 9 |
| Unpacked size | 3.7 MB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 8 |
| Maintainers | catpea |

## Links

- npm: https://www.npmjs.com/package/signalcraft
- Repository: https://github.com/catpea/signalcraft
- Homepage: https://github.com/catpea/signalcraft#readme
- Issues: https://github.com/catpea/signalcraft/issues
- npm.io page: https://npm.io/package/signalcraft

## Dependencies (9)

- [h](https://npm.io/package/h.md) ^1.0.0
- [rxjs](https://npm.io/package/rxjs.md) ^7.8.1
- [uuid](https://npm.io/package/uuid.md) ^9.0.1
- [oneof](https://npm.io/package/oneof.md) ^2.1.0
- [lodash](https://npm.io/package/lodash.md) ^4.17.21
- [jsx-dom](https://npm.io/package/jsx-dom.md) ^8.1.1
- [panzoom](https://npm.io/package/panzoom.md) ^9.4.3
- [bootstrap](https://npm.io/package/bootstrap.md) ^5.3.2
- [calculate-percent](https://npm.io/package/calculate-percent.md) ^2.1.0

## Recent versions

- 1.0.4 (latest) — 2023-12-09
- 1.0.3 — 2023-12-09
- 1.0.2 — 2023-11-13
- 1.0.1 — 2023-11-12

## README

# signalcraft
A tiny visual programming language.
 
## How It Works

- you define node types first
- then create a view, which is a UI, an SVG
- then you addNode(type) the view will update to show that node
- then you linkNodes to create a flow (see src/usage.js)
- then you .run(node), you have to specify a node you want to spider up and execute payload on

## How It Really Works

- System Is Reactive, Full Time Travel
- When defining Types, you really just specify Input Dots and Reply Dots.
- Input is the Property of a Node that you can link to
- Reply is the Function of a Node that gets executed via a downstream node
- Nodes are decorated as Panels
- Edges are decorated as Cables
- Reactivity Links everything together.

## TODO

- INput/Reply must be reactive as they will give cable its x and y
- CRITICAL: SimpleCollection.export needs to make proper copies,

- use Krita to create system diagram
- implement cables/wires
- cables should be type sensitive numbers, strings, objects
- Paint edges
- Add Drag & Drop
- Add Selection Manager (maybe groups)

## Building
npm install --save-exact --save-dev esbuild

### Design Ideas

![art/fui-0.jpg](art/fui-0.jpg)
![art/fui-1.jpg](art/fui-1.jpg)
![art/fui-2.jpg](art/fui-2.jpg)
![art/fui-3.jpg](art/fui-3.jpg)
![art/fui-4.jpg](art/fui-4.jpg)
![art/fui-5.jpg](art/fui-5.jpg)
![art/fui-6.jpg](art/fui-6.jpg)
![art/fui-7.jpg](art/fui-7.jpg)
![art/fui-8.jpg](art/fui-8.jpg)
![art/fui-9.jpg](art/fui-9.jpg)
![art/fui-10.jpg](art/fui-10.jpg)
![art/fui-11.jpg](art/fui-11.jpg)

### Current State
![art/fui-x.jpg](art/fui-x.jpg)
![art/fui-y.jpg](art/fui-y.jpg)

---
_Source: https://npm.io/package/signalcraft · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
