Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/plastic-io/graph-server
plastic-io document and event server
https://github.com/plastic-io/graph-server
Last synced: 4 days ago
JSON representation
plastic-io document and event server
- Host: GitHub
- URL: https://github.com/plastic-io/graph-server
- Owner: plastic-io
- License: bsd-3-clause
- Created: 2020-02-04T21:49:43.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-24T06:29:16.000Z (8 months ago)
- Last Synced: 2024-08-02T12:52:05.191Z (3 months ago)
- Language: TypeScript
- Size: 641 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - plastic-io/graph-server - plastic-io document and event server (others)
README
# Installation
1. [Install serverless and setup your AWS profile](https://www.serverless.com/framework/docs/getting-started/)
2. `git clone [email protected]:plastic-io/graph-server.git`
3. `cd graph-server`
4. `npm install`
5. `sls deploy`Your service is ready to use. Take note of the endpoints beginning with `ANY - https://` and `wss://`. You will need them when using the [Plastic-IO IDE](https://github.com/plastic-io/graph-editor) and running your server based graphs. Is OK if you forget to write them down, you can see them again by running `sls info`.
# Plastic-IO Graph Server
* Plastic-IO Graph Scheduler Service
* Plastic-IO Graph Editor IDE Notification Service
* HTTP Graph Scheduler Host
* HTTP/WSS Graph API
* S3 Event Sourced Graph Database
* S3 Artifact Storage
* APIGWv2 Multiuser Connection Manager# What is this server?
This server provides graph services to the [Plastic-IO IDE](https://github.com/plastic-io/graph-editor) as well as the production runtime for Plastic-IO graphs.
Additionally, this server provides a multi user environment to develop, share, and monitor Plastic-IO graphs.
# What are Plastic-IO Graphs?
Plastic-IO graphs are a high level graph programming language built on top of JavaScript and executed with the [Plastic-IO Scheduling Engine](https://github.com/plastic-io/plastic-io). Plastic-IO graphs are stored as JSON files. The GUI for Plastic-IO is the [Plastic-IO Graph Editor IDE](https://github.com/plastic-io/graph-editor).
# Executing Graphs on the Graph Server
You can execute graphs on the server by subscribing events to the lambda "DefaultRoute" in this project. By default, all unbound HTTP traffic to the domain will come to the graph route. What graph gets executed is based on the URL.
/.
Example:
The following URL would run vector "html" on graph "home"https://mysite.com/home.html
Graphs are stored by their URL. Once the graph is looked up, the scheduler is invoked with the matching vector's URL.
If no vector URL is specified, the vector URL "index" is assumed. Similarity, if no graph URL is specified, the graph "index" is assumed. That makes the default route to the server "/" the graph "index" and the vector "index".
# Environments and Publishing
When you publish a graph, that graph becomes available in the production environment. Changes to the graph will not take effect until you publish the graph once again. You can still test your graph in the development environment after each change.
# Sharing Vectors and Graphs
When you publish your vector or graph, it becomes available to other users of your Graph Database. These published versions are immutable and free of dependency issues. Once a graph or vector is published, users of that artifact can be sure it will never change. Past versions are listed right next to current versions and clearly labeled.
## Infrastructure as a Graph
Because you can share the parts of the graph, and entire hypergraphs, Plastic-IO server allows you to build your entire infrastructure using first "low level" JavaScript and then higher level graphical programming, all within the multiuser [Plastic-IO IDE](https://github.com/plastic-io/graph-editor).
## Maximize Code Reuse
Because each vector and graph in Plastic-IO are implicitly modular, this makes it so you can reuse the artifacts you create in other graphs very easily. Plastic-IO graph server provides a marketplace of graphs and vectors for developers to choose from, safely and securely.
See https://github.com/plastic-io/graph-editor for for the GUI client for this server.
## Client Server Sequence Diagram
+-----------+ +------------------+ +-----------------------------+ +----------------+
| | | | | | | |
| Browser | | Local Graph | | Local Remote Graph Copy | | Remote Graph |
| | | | | | | |
+-----+-----+ +--------+---------+ +-------------+---------------+ +--------+-------+
| | | |
| +++ | +++
+----Change---> | | +----Diff Calc----------------Change sent to Server--> | |
| | | | | |
| | | +++ | |
| | | | | | |
| | | <----Diff Calc------+ | | <---Change Sent to Client--+ | |
| +++ +++ +++
| | | |
| | | |