collection for Feakin only. inspired by: https://github.com/anvaka/graph-drawing-libraries
- Drawio this project, is a configurable diagramming/whiteboarding visualization application. draw.io is owned and developed by JGraph Ltd, a UK based software company.
- Excalidraw Virtual whiteboard for sketching hand-drawn like diagrams.
- ourboard An online whiteboard.
- MaxGraph is a TypeScript library which can display and allow interaction with vector diagrams.
- VivaGraphis designed to be extensible and to support different rendering engines and layout algorithms. Underlying algorithms have been broken out into ngraph.
- Sigma.js is an open-source JavaScript library aimed at visualizing graphs of thousands of nodes and edges.
Others:
- Alchemy is a graph drawing application built in d3. Alchemy.js was built so that developers could easily get up and running with Graph visualization applications, and not much over head.
- cola.js JavaScript constraint based layout for high-quality graph visualization and exploration using D3.js and other web-based graphics libraries.
- ELK Eclipse Layout Kernel (ELK) implements an infrastructure to connect diagram editors or viewers to automatic layout algorithms. This library takes the layout-relevant part of ELK and makes it available to the JavaScript world.
- KLayJS is a layer-based layout algorithm that is particularly suited for node-link diagrams with an inherent direction and ports (explicit attachment points on a node's border).
- Dracula is a set of tools to display and layout interactive graphs, along with various related algorithms.
- dagre is a JavaScript library that makes it easy to lay out directed graphs on the client-side.
- Springy is a force directed graph layout algorithm in JavaScript.
- ngraph is a set of graph related algorithms. It can be used in a browser or on the server side. This repository is a collection of examples, which show how to use some of them or build your own.
Cytoscape.js related:
- cytoscape.js-cise iSE(Circular Spring Embedder) is an algorithm based on the traditional force-directed layout scheme with extensions to move and rotate nodes in the same cluster as a group.
- SyBLaRS Systems Biology Layout & Rendering Service (SyBLaRS) is a web service to lay out graphs in SBGNML, SBML, GraphML and JSON formats and/or produce corresponding images (in JPG, PNG or SVG formats) of the layouts with an option to highlight results from various graph queries in the backend.
- avsdf An implementation of the Circular Drawing Algorithm by Hongmei He & Ondrej Sýkora.
- fcose is a faster version of our earlier compound spring embedder algorithm named CoSE, implemented as a Cytoscape.js extension by i-Vis Lab in Bilkent University.
D3.js realted:
- D3 Force Force-directed graph layout using velocity Verlet integration.
- cytoscape-d3-force d3-force for cytoscape
Framework related:
- vis-network is a visualization to display networks and networks consisting of nodes and edges. The visualization is easy to use and supports custom shapes, styles, colors, sizes, images, and more.
- Rough is a small (<9 kB) graphics library that lets you draw in a sketchy, hand-drawn-like, style. The library defines primitives to draw lines, curves, arcs, polygons, circles, and ellipses. It also supports drawing SVG paths.
- Konvajs is an HTML5 Canvas JavaScript framework that extends the 2d context by enabling canvas interactivity for desktop and mobile applications.
- react-konva JavaScript library for drawing complex canvas graphics using React.
- Raphael Cross-browser vector graphics the easy way.
- https://github.com/graphology/graphology is a robust & multipurpose Graph object for JavaScript and TypeScript.
Cinco:
- Cinco Cinco SCCE Meta Tooling Framework.
Meta Graph Language, The root element of every mgl file is the MGL model object. It can contain several model elements like graphmodels, nodes, edges, and more. Beside of that, it also contains some mandatory meta data that will be considered upon generation.
- https://github.com/enkimute/ganja.js Javascript Geometric Algebra Generator for Javascript, c++, c#, rust, python. (with operator overloading and algebraic literals) - refs to https://bivector.net/lib.html
- SAT.js A simple JavaScript library for performing 2D collision detection
- RBush is a high-performance JavaScript library for 2D spatial indexing of points and rectangles.
- JSTS is an ECMAScript library of spatial predicates and functions for processing geometry conforming to the Simple Features Specification for SQL published by the Open Geospatial Consortium.
- Hypermerge is a Node.js library for building p2p collaborative applications without any server infrastructure. It combines Automerge, a CRDT, with hypercore, a distributed append-only log.
- automerge A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
- yjs is a CRDT implementation that exposes its internal data structure as shared types. Shared types are common data types like Map or Array with superpowers: changes are automatically distributed to other peers and merged without merge conflicts.
- SyncedStore is an easy-to-use library for building collaborative applications that sync automatically. It's built on top of Yjs, a proven, high performance CRDT implementation.
- y-monaco binding maps a Y.Text to the Monaco editor (the editor that power VS Code).
- ShareDB is a realtime database backend based on Operational Transformation (OT) of JSON documents. It is the realtime backend for the DerbyJS web application framework.
- Teletype An Atom package that lets developers share their workspace with team members and collaborate on code in real time.
- Swarm is a JavaScript client for the Swarm database. Swarm is like "git for data" except it's real-time and never has a merge conflict.
- Etherpad Etherpad: A modern really-real-time collaborative document editor.
- Automerge RS is a Rust library implementation of the Automerge file format and network protocol. Its focus is to support the creation of Automerge implementations in other languages, currently; WASM, JS and C. A libautomerge if you will.
- Diamond Types contains a high performance rust CRDT for text editing. This is a special data type which supports concurrent editing of lists or strings (text documents) by multiple users in a P2P network without needing a centralized server.
- Ropey is a utf8 text rope for Rust, designed to be the backing text-buffer for applications such as text editors. Ropey is fast, robust, and can handle huge texts and memory-incoherent edits with ease.
- Redwood is a highly-configurable, distributed, realtime database that manages a state tree shared among many peers. Imagine something like a Redux store, but distributed across all users of an application, that offers offline editing and is resilient to poor connectivity.
- https://github.com/convergencelabs/monaco-collab-ext Adds collaborative editing capabilities to the Monaco Editor
for more: CRDTs tech
Conflict-free replicated data type -> wiki
- ★★★★★ Hacker News: Faster CRDTs: An Adventure in Optimization (josephg.com)
- CRDT Primer
- ★★★★★ Data Laced with History: Causal Trees & Operational CRDTs
Resources:
- Xi Editor CRDT,Actions:Deletion; tombstones; intervals;Undo;Recap。
Operational transformation -> wiki