Skip to content

Awesome frontend graph theory library for Feakin, like model, layout, algorithm.

Notifications You must be signed in to change notification settings

feakin/awesome-frontend-graph-library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

Awesome Opensource Graph Library

collection for Feakin only. inspired by: https://github.com/anvaka/graph-drawing-libraries

Graph App

  • 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.

Graph Drawing Library

  • 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.

Layout Algorithm

  • 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:

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.

Render Styled

  • 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.

Render

  • 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.

Model

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.

Geometric Algebra

Collision Detection

  • 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.

Server

JavaScript

  • 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.

Rust

  • 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.

Golang

  • 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.

Editor

Documents

for more: CRDTs tech

CRDT

Conflict-free replicated data type -> wiki

Resources:

OT

Operational transformation -> wiki

Others

About

Awesome frontend graph theory library for Feakin, like model, layout, algorithm.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published