• Stars
    star
    279
  • Rank 147,967 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 11 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Visual programming for the browser

Image

flood

What is it?

flood is a dataflow-style visual programming language based on Scheme written in JavaScript. flood runs in a browser and as a standalone application on all platforms via node-webkit.

Features

  • Constructive solid geometry - Cube, cylinder, sphere, union, intersect, subtract
  • Formula node - evaluate javascript in a node
  • Never save your work
  • Fast node library search
  • Undo/redo across user sessions
  • Copy/paste
  • Multiple workspaces
  • Async evaluation
  • Partial function application
  • "Always on" continuous execution

flood, like early versions of Dynamo, is based on Scheme and thus has many of the features of that language. It uses a lightweight scheme interpreter I wrote called scheme.js.

Getting started

The flood app is scaffolded with Yeoman, uses Grunt for task management and Bower for web package management. If you're not familiar with these tools, you should take a look at the docs and get them installed.

flood uses require.js to manage dependencies between JavaScript files and backbone.js to stick it all together.

flood also has a server written in node.js that handles user authentication and model synchronization.

Installing dependencies for the app

To install all of the dependencies for the flood app, run the following commands in the root directory:

bower install
npm install

This will install all of the development dependencies for Grunt and all of the public dependencies with bower.

Installing dependencies for the server

To install all of the node.js dependencies for the flood server, run the following commands in the "server" directory:

npm install

You will also need to install MongoDB and run an instance on port 27017, the default port for MongoDB. You can get MongoDB here.

Running the server

For development, I recommend using the great nodemon tool:

npm install -g nodemon

Go to the "server" directory and run:

nodemon app.js

You can also run the server using:

node app.js

Building for the web (outdated)

The entire app can be compressed into lightweight, minified, and concatenated css, js, and html files using Grunt:

grunt 

Building for the desktop

flood can be used as a standalone application via node-webkit. Just do this:

grunt desktop

This will generate binaries for use on Mac and Windows in the dist_desktop folder.

License

The MIT License (MIT)

Copyright (c) Peter Boyer 2014-2020

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

More Repositories

1

verb

Open-source, cross-platform NURBS
JavaScript
699
star
2

labor.js

Maintain a pool of WebWorkers with callbacks. Based on Ilmari Heikkinen's WorkCrew library. Easily wrap existing libraries in Web Worker functionality. Works in the browser and node.js.
JavaScript
32
star
3

LilOpt

Non-linear least squares in C++, header-only, inspired by Ceres solver.
C++
28
star
4

scheme.js

The 10 millionth JavaScript Scheme interpreter.
JavaScript
15
star
5

nomial

A TypeScript implementation of High-Performance Polynomial Root Finding for Graphics (Yuksel 2022)
TypeScript
10
star
6

nextjs-terraform

Example next.js app w/ terraform, docker
HCL
8
star
7

designscript.js

Run DesignScript in the browser, node.js
JavaScript
6
star
8

glober

Android app for viewing equirectangular panoramas and 3d models (.3ds). Includes sensor fusion support for gyroscope, accelerometer, and compass.
Java
6
star
9

LinearSearch

A lightweight, learning algorithm for searching a homogeneous list of items.
HTML
5
star
10

cs173

Homework assignments and interpreters based on the reading from Brown's 2012 Introduction to Programming Languages class (CS173)
Racket
4
star
11

raleighbikeways

https://raleighbikeways.ptrbyr.com/
HTML
3
star
12

PyPano

A panorama stitcher written in Python.
Python
3
star
13

rec

Rec is a foundational library for implementing undo, redo, diffing, and event systems in JavaScript.
JavaScript
3
star
14

fips-immer

2
star
15

skiplist

A Go skip list implementation.
Go
2
star
16

tela

Visual programming language in TypeScript, React, Redux rendered to Canvas2D
TypeScript
2
star
17

KinectToSTL

C++
2
star
18

dfs

DFS in Go without recursion
Go
2
star
19

redblack

Red black tree data structure in Go
Go
1
star
20

raleigh-bike-map

Rasterize a bike map of Raleigh using OpenStreetMap data and Mapnik
JavaScript
1
star
21

cmakecpp

Simple CMake starter template for C++ executables
CMake
1
star
22

dsm

Direct Stiffness Method in Rust
Rust
1
star
23

namedpipes

Demonstrates how to use named pipes to set up streaming dataflows with go
Go
1
star
24

taskapp

A simple task list app built using AWS Lambda, Apex, and Terraform
Go
1
star
25

operatorPrecedence

Simple operator precedence parser in Go
Go
1
star
26

WithoutHotAir

A US edition of Sustainable Energy - Without The Hot Air
1
star
27

pbPTAM

A customized implementation of Parallel Tracking and Multi-Mapping
1
star
28

csg.hs

A port of csg.js to Haskell, never finished
Haskell
1
star
29

trie

Trie trees in JS, Go
Go
1
star
30

toposort

Topological sort in Go
Go
1
star