explaingit

northwoodssoftware/gojs

8,427HTMLAudience · developerComplexity · 3/5LicenseSetup · easy

TLDR

GoJS is a commercial JavaScript library for building interactive diagrams in the browser, flowcharts, org charts, mind maps, network graphs, and hundreds more, without building the rendering engine yourself.

Mindmap

mindmap
  root((gojs))
    Diagram Types
      Flowcharts
      Org charts
      Mind maps
      Network graphs
    Layouts
      Tree layout
      Force-directed
      Circular
      Layered graph
    Data Model
      JSON-driven
      Data binding
      Canvas or SVG output
    Licensing
      Free for evaluation
      Paid for production
    Environments
      Browser
      Node.js server
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build an interactive flowchart editor where users can drag, drop, and connect nodes inside a web page.

USE CASE 2

Render a live org chart from JSON employee data, with automatic tree layout and clickable nodes.

USE CASE 3

Create a network topology diagram that updates in real time as data changes, using GoJS's data-binding model.

USE CASE 4

Export a GoJS diagram as an SVG or PNG image for embedding in reports or documents.

Tech stack

JavaScriptTypeScriptHTMLCanvasSVG

Getting it running

Difficulty · easy Time to first run · 30min

A paid commercial license is required before any production or commercial use, free evaluation only covers development and testing.

Free for evaluation and development only, a paid commercial license from Northwoods Software is required before shipping to production or using in a commercial product.

In plain English

GoJS is a JavaScript and TypeScript library for building interactive diagrams inside a web browser. It handles the rendering, user interaction, and data model for you, so developers can focus on configuring what the diagram looks like and how it behaves rather than building the drawing engine from scratch. The library supports a wide range of diagram types. The README and accompanying samples cover flowcharts, organization charts, swimlanes, timelines, kanban boards, mind maps, network graphs, family trees, UML class diagrams, PERT charts, Gantt charts, floor plans, and hundreds more. Built-in layout algorithms include tree layout, force-directed (nodes push apart like magnets), circular, and layered directed-graph arrangements. Custom layouts are also supported through extensions included in the repository. Diagrams in GoJS are data-driven. You define templates that describe how a node or link should look, then supply JSON data describing the actual nodes and connections. The library binds your data to the visual elements, so changing the data updates the diagram. This also makes saving and loading diagrams straightforward since the model serializes to JSON text. Rendering can target either an HTML Canvas element or SVG, and the library can export images. It also runs outside the browser in server-side Node.js or headless browser environments. GoJS is a commercial product from Northwoods Software. A free evaluation license is available for testing and development, but production or commercial use requires a paid license. The GitHub repository hosts the full library source alongside all samples and documentation. The samples alone cover hundreds of diagram types and are searchable through the repository. Support is offered through a forum on the Northwoods Software website, with a month of direct developer support available to prospective customers.

Copy-paste prompts

Prompt 1
Show me the minimal GoJS setup to render a flowchart from a JSON array of nodes and links on a plain HTML page, using a Canvas element.
Prompt 2
I have an array of employee objects with id, name, and managerId fields. Write a GoJS diagram definition that renders them as an org chart with automatic tree layout.
Prompt 3
Explain how GoJS data binding works, if I update my JavaScript data array, how does the diagram know to re-render the affected nodes?
Prompt 4
Write a GoJS force-directed network graph where nodes represent servers and links represent connections, and clicking a node highlights its neighbors.
Prompt 5
How do I export the current GoJS diagram to a PNG image that I can offer as a download button on the page?
Open on GitHub → Explain another repo

← northwoodssoftware on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.