Skip to content

Commit 09fa91b

Browse files
committed
init
0 parents  commit 09fa91b

File tree

1,804 files changed

+178390
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,804 files changed

+178390
-0
lines changed

.env

Whitespace-only changes.

.eslintrc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"root": true,
3+
"parser": "@typescript-eslint/parser",
4+
"plugins": [
5+
"@typescript-eslint",
6+
"prettier"
7+
],
8+
"extends": [
9+
"eslint:recommended",
10+
"plugin:@typescript-eslint/eslint-recommended",
11+
"plugin:@typescript-eslint/recommended",
12+
"prettier"
13+
],
14+
"rules": {
15+
"no-console": 1, // warning
16+
"prettier/prettier": 2 // error
17+
}
18+
}

.gitignore

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
.git
2+
3+
node_modules
4+
5+
.DS_Store
6+
7+
.vscode
8+
9+
report.*.json
10+
11+
_*
12+
13+
stderr.log
14+
15+
stdout.log
16+
17+
lib/**/*
18+
19+
build/**/*
20+
21+
yarn-error.log
22+
23+
.env
24+
25+
public/index.js
26+
27+
src/client/static/js/index.js.ts

.npmignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules
2+
**/*.log
3+
.DS_Store
4+
.vscode

.prettierignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
src/test/**
2+
3+
lib
4+
5+
build
6+
7+
_*

.prettierrc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"singleQuote": true,
3+
"trailingComma": "es5",
4+
"semi": false,
5+
"bracketSpacing": true
6+
}

LICENCE

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
MIT License
2+
3+
Copyright 2021 UNIT IO, Inc
4+
5+
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:
6+
7+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8+
9+
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.

README.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# unit
2+
3+
Next Generation Visual Programming Platform
4+
5+
![unit merge sort example](/public/gif/0.gif)
6+
7+
## unit
8+
9+
unit is a General Purpose Visual Programming Language and Environment built with a primary focus on Developer Experience.
10+
11+
It is heavily inspired by Data Flow Programming, Reactive Programming, Functional Programming and Object Oriented Programming paradigms. Formally, units are Multi Input Multi Output (MIMO) Finite State Machines (FSE). A program in unit is represented as a Graph.
12+
13+
The unit Programming Language was developed in close junction to the unit Programming Environment, which is a Web application built for easy composition of new units. The environment is designed to feel visual and kinesthetic, giving the perception of Direct Manipulation of Live Virtual Objects. The unit Programming experience is minimalistic and ergonomic; Programming can be partially performed by Gesture and by Voice.
14+
15+
unit is similar in concept to the Unix shell; for a seasoned programmer, unit should feel like the 2D evolution of the Command Line Interface (CLI) where units' (commands) inputs and outputs (stdin/stdout/stderr) can be piped together into a graph (script). In fact, unit can thought at the re-exploration of the [Unix Philosophy](https://en.wikipedia.org/wiki/Unix_philosophy) in the context of modern Software Engineering.
16+
17+
The unit system is set to grow into a modern and approachable Web Operating System, which is sandboxed by default, enabling a new era of Software Sharing and Collaboration.
18+
19+
The broader Design Philosophy behind unit is discussed in [Concept](src/docs/concept/README.md).
20+
21+
To jump right into the official unit Programming Environment (Beta), visit [ioun.it](https://ioun.it).
22+
23+
The following is a manual on how to run a local version of the unit Programming Environment.
24+
25+
## Installation
26+
27+
Install [yarn](https://classic.yarnpkg.com/en/docs/install/#mac-stable) and [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) if you haven't aready.
28+
29+
Clone this repository:
30+
31+
```
32+
git clone [email protected]:samuelmtimbo/unit.git
33+
```
34+
35+
Get into the unit folder:
36+
37+
```
38+
cd unit
39+
```
40+
41+
Install dependencies and build:
42+
43+
```
44+
yarn
45+
```
46+
47+
Buiild:
48+
49+
```
50+
yarn setup
51+
```
52+
53+
Start a local unit server:
54+
55+
```
56+
yarn start
57+
```
58+
59+
For development mode:
60+
61+
```
62+
yarn watch
63+
```
64+
65+
## Documentation
66+
67+
As an application, the unit Programming Environment was designed to be learnable by Experimentation and Exploration; visual and written documentation can be found inside the platform. For a step-by-step introduction to unit Programming, visit [Getting Started](src/docs/start/README.md).
68+
69+
This codebase is a TypeScript implementation of the unit Programming Language Spec with an accompanying Web based Programming Environment. I tried to make it as clean and organized as I could while still maintaining a space for experimentation. Some folders contain a `README.md` file with information about that piece of the architecture.
70+
71+
## Contributing
72+
73+
unit has been developed by a single Software Engineer, [Samuel Timbó](https://github.com/samuelmtimbo), working since 2017, first as a personal project and then later as a full-time job.
74+
75+
I would like to maintain the same level of creative freedom, invention, and intimacy that motivated me and made the project possible; that said, if you would like to directly participate in the development of Open Source unit, hit me up at [@io_sammt](https://twitter.com/io_sammt).
76+
77+
## Community
78+
79+
If you have a question or a suggestion related to Open Source unit, or if you just want to talk about the Future of Programming, feel free to DM me at [@io_sammt](https://twitter.com/io_sammt).
80+
81+
For weekly updates about unit Development, including thoughts about Vision and Roadmap, follow us on Twitter [@io_unit](https://twitter.com/io_unit).
82+
83+
We hope you enjoy unit and invite you to be part of our community!
84+
85+
## License
86+
87+
MIT License
88+
89+
Copyright 2021 UNIT IO, Inc

nodemon.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"watch": [
3+
"./src/server"
4+
],
5+
"ext": "ts",
6+
"ignore": [],
7+
"exec": "ts-node -T src/server/index.ts"
8+
}

package.json

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{
2+
"name": "unit",
3+
"version": "1.0.0",
4+
"main": "index.js",
5+
"repository": "[email protected]:samuelmtimbo/unit.git",
6+
"author": "Samuel Timbó <[email protected]>",
7+
"license": "MIT",
8+
"scripts": {
9+
"v": "ts-node src/script/v.ts",
10+
"dev:node": "NODE_ENV=development node",
11+
"watch:server": "NODE_ENV=development nodemon --config nodemon.json",
12+
"watch:bundle": "ts-node src/script/watch/client.ts",
13+
"watch:client": "run-p watch:bundle watch:worker watch:sw",
14+
"watch:worker": "run-s watch:worker:pod",
15+
"watch:worker:pod": "ts-node src/script/watch/worker/pod.ts",
16+
"watch:sw": "ts-node src/script/watch/sw.ts",
17+
"watch": "run-p watch:server watch:client",
18+
"start": "node lib/server/index.js",
19+
"setup": "yarn run-s build lib",
20+
"prepare": "",
21+
"tcheck": "tsc --noEmit",
22+
"lib": "rm -rf lib; tsc",
23+
"test": "ts-node src/test/index.ts",
24+
"build": "run-s build:system build:client build:worker build:sw",
25+
"build:bundle": "ts-node src/script/build/client.ts",
26+
"build:client": "run-s build:bundle build:meta build:worker",
27+
"build:system": "ts-node src/script/build/system.ts",
28+
"build:worker": "run-s build:worker:pod",
29+
"build:worker:pod": "ts-node src/script/build/worker/pod.ts",
30+
"build:sw": "ts-node src/script/build/sw.ts",
31+
"build:meta": "ts-node src/script/build/meta/client.ts",
32+
"lint": "eslint src --ext .ts",
33+
"format": "prettier --config .prettierrc 'src/**/*.ts' --write"
34+
},
35+
"dependencies": {
36+
"base-64": "1.0.0",
37+
"compression": "1.7.4",
38+
"cors": "2.8.5",
39+
"dotenv": "10.0.0",
40+
"encodeurl": "1.0.2",
41+
"eventemitter2": "5.0.1",
42+
"express": "4.17.2",
43+
"fuzzy": "0.1.3",
44+
"glob": "7.1.6",
45+
"http-errors": "1.8.0",
46+
"is-ip": "3.1.0",
47+
"joi": "17.4.0",
48+
"node-fetch": "3.0.0",
49+
"querystring": "0.2.0",
50+
"resize-observer-polyfill": "1.5.1",
51+
"ws": "7.4.4"
52+
},
53+
"devDependencies": {
54+
"@types/base-64": "1.0.0",
55+
"@types/encodeurl": "1.0.0",
56+
"@types/eventemitter2": "4.1.0",
57+
"@types/express": "4.17.13",
58+
"@types/node": "17.0.0",
59+
"@typescript-eslint/eslint-plugin": "5.7.0",
60+
"@typescript-eslint/parser": "5.7.0",
61+
"esbuild": "0.14.5",
62+
"eslint": "8.5.0",
63+
"eslint-config-prettier": "8.3.0",
64+
"eslint-plugin-prettier": "3.4.0",
65+
"fs-extra": "10.0.0",
66+
"nodemon": "2.0.15",
67+
"npm-run-all": "4.1.5",
68+
"npm-run-scripts": "2.1.2",
69+
"prettier": "2.3.1",
70+
"ts-node": "10.4.0",
71+
"typescript": "4.5.4"
72+
}
73+
}

public/browserconfig.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<browserconfig>
3+
<msapplication>
4+
<tile>
5+
<square70x70logo src="/favicon_70.png"/>
6+
<square150x150logo src="/favicon_150.png"/>
7+
<square310x310logo src="/favicon_310.png"/>
8+
<TileColor>#1f1f1f</TileColor>
9+
</tile>
10+
</msapplication>
11+
</browserconfig>

public/favicon.ico

21.9 KB
Binary file not shown.

public/favicon_1024.png

19.2 KB
Loading

public/favicon_114.png

1.91 KB
Loading

public/favicon_120.png

2.05 KB
Loading

public/favicon_128.png

2.17 KB
Loading

public/favicon_144.png

2.49 KB
Loading

public/favicon_150.png

2.53 KB
Loading

public/favicon_152.png

2.6 KB
Loading

public/favicon_16.png

314 Bytes
Loading

public/favicon_160.png

2.73 KB
Loading

public/favicon_180.png

3.1 KB
Loading

public/favicon_192.png

3.27 KB
Loading

public/favicon_256.png

4.44 KB
Loading

public/favicon_310.png

5.28 KB
Loading

public/favicon_32.png

542 Bytes
Loading

public/favicon_48.png

819 Bytes
Loading

public/favicon_512.png

9.06 KB
Loading

public/favicon_57.png

955 Bytes
Loading

public/favicon_60.png

1007 Bytes
Loading

public/favicon_64.png

1.04 KB
Loading

public/favicon_70.png

1.16 KB
Loading

public/favicon_72.png

1.17 KB
Loading

public/favicon_76.png

1.21 KB
Loading

public/favicon_96.png

1.59 KB
Loading

public/fonts/Inconsolata-Bold.eot

24.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)