# dgmjs/dgmjs

An infinite canvas with smart shapes

Repository: https://github.com/dgmjs/dgmjs
Canonical: https://ross.abutalabs.com/products/dgmjs
Homepage: https://dgmjs.dev
Language: TypeScript
License: GPL-3.0
License Family: copyleft
Topics: canvas, diagram, drawing, sketch, whiteboard
Last push: 2025-12-26T15:01:09+00:00

## Health v2 (maintenance only)
Score: 62/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 59, release rhythm 63, longevity 67
- inputs: {"age_days": 941, "days_push": 250, "days_rel": 250, "gap_med": 4, "n_releases_24m": 58}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1671, forks 85 (observed 2026-08-28T04:05:19.967580+00:00)

## What it is
DGM.js is a TypeScript library providing an infinite canvas with programmable 'smart shapes' for building diagramming, whiteboarding, and sketching applications. It offers React headless components, multi-page documents, hand-drawn styles, real-time collaboration via Yjs, and export to PNG, SVG, PDF, and JSON.

## Use cases
- build a whiteboard app with an infinite canvas
- embed a diagram editor in a React app
- create a wireframing or sketching tool
- add real-time collaborative drawing to a web app
- export diagrams to PNG, SVG, or PDF
- define custom shapes with scripts and constraints
- support hand-drawn sketch style diagrams

## When to choose
- you need an embeddable canvas/diagram engine in a TypeScript or React web app
- you want programmable shapes with constraints and scripting
- you need multi-page documents, dark mode, and image/PDF export out of the box
- you want optional real-time collaboration via Yjs

## When to avoid
- you need a ready-made end-user whiteboard app rather than a library
- your project requires permissive licensing (GPLv3 with paid options for non-GPL)
- you want to contribute code, since pull requests are not accepted
- you are not using a web/JavaScript stack

## Facets
- artifact type: library
- maturity: active
- function: ui-components, graphics, image-processing, state-management
- domain: web-development, frontend, graphics, developer-tools
- platform: browser
- tags: infinite-canvas, diagramming, whiteboard, sketching, smart-shapes, hand-drawn-style, real-time-collaboration, react, web-server, typescript

## Member repositories
- dgmjs/dgmjs (main) score 62

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:19.967580+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:42:40.659275+00:00, confidence not recorded.
  - readme: https://github.com/dgmjs/dgmjs (fetched 2026-08-28T04:05:19.967580+00:00, sha eca59c380431)
  - homepage: https://dgmjs.dev (fetched 2026-08-29T11:16:04.092074+00:00, sha 950ddf149624)
  - site_page: https://dgmjs.dev/overview/getting-started (fetched 2026-08-29T11:16:04.101096+00:00, sha 1eea078250c4)
- Data as of 2026-08-30T08:39:29.467469+00:00.
