Created
November 9, 2025 09:32
-
-
Save pwright/6c16a74cff401b1f8467c86b40a7d186 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "id": "diagramming-space-generic", | |
| "title": "Diagramming Tools — Generic Value Chain", | |
| "abstract": "Diagramming spans free-form sketching and text-to-diagram authoring through to embedding and export. User-visible value (create, collaborate, consume) rides on rendering/layout pipelines and DSL engines, backed by platform services (APIs, auth, data) and infrastructure (runtimes, realtime networking, storage, telemetry).", | |
| "categories": [ | |
| { | |
| "id": "experience", | |
| "title": "User Experience", | |
| "items": [ | |
| { "id": "sketching-whiteboard", "name": "Sketching Whiteboard", "deps": ["renderer-core", "realtime-collab"] }, | |
| { "id": "text-to-diagram-ui", "name": "Text-to-Diagram UI", "deps": ["dsl-parser", "renderer-core"] }, | |
| { "id": "embed-widgets", "name": "Embed Widgets", "deps": ["delivery-api"] }, | |
| { "id": "export-formats", "name": "Export (SVG/PNG/PDF)", "deps": ["image-encoder"] }, | |
| { "id": "diagram-templates", "name": "Template-Based Authoring", "deps": ["template-gallery"] } | |
| ] | |
| }, | |
| { | |
| "id": "collaboration", | |
| "title": "Collaboration & Distribution", | |
| "items": [ | |
| { "id": "realtime-collab", "name": "Real-time Collaboration", "deps": ["network-realtime"] }, | |
| { "id": "share-links-permissions", "name": "Share Links & Permissions", "deps": ["authn-authz", "delivery-api"] }, | |
| { "id": "versioning-history", "name": "Versioning & History", "deps": ["data-service"] }, | |
| { "id": "template-gallery", "name": "Template Gallery", "deps": ["data-service"] } | |
| ] | |
| }, | |
| { | |
| "id": "rendering", | |
| "title": "Rendering & Layout", | |
| "items": [ | |
| { "id": "scene-graph", "name": "Scene Graph", "deps": ["data-service"] }, | |
| { "id": "auto-layout", "name": "Auto-Layout", "deps": ["graphviz-engine"] }, | |
| { "id": "renderer-core", "name": "Renderer Core", "deps": ["scene-graph", "auto-layout"] }, | |
| { "id": "image-encoder", "name": "Image Encoder", "deps": ["renderer-core"] } | |
| ] | |
| }, | |
| { | |
| "id": "engines", | |
| "title": "Engines & Languages", | |
| "items": [ | |
| { "id": "dsl-parser", "name": "DSL Parser(s)", "deps": [] }, | |
| { "id": "mermaid-runtime", "name": "Mermaid Runtime", "deps": ["runtime-platforms"] }, | |
| { "id": "plantuml-runtime", "name": "PlantUML Runtime", "deps": ["runtime-platforms"] }, | |
| { "id": "graphviz-engine", "name": "Graphviz Engine", "deps": ["container-runtime"] }, | |
| { "id": "bpmn-runtime", "name": "BPMN Runtime", "deps": ["runtime-platforms"] } | |
| ] | |
| }, | |
| { | |
| "id": "platform", | |
| "title": "Platform Services", | |
| "items": [ | |
| { "id": "backend-api", "name": "Backend API", "deps": ["runtime-platforms"] }, | |
| { "id": "delivery-api", "name": "Delivery/Embed API", "deps": ["backend-api"] }, | |
| { "id": "authn-authz", "name": "AuthN/Z", "deps": ["backend-api"] }, | |
| { "id": "data-service", "name": "Data Service (Docs/Assets)", "deps": ["data-store"] }, | |
| { "id": "observability", "name": "Observability", "deps": ["telemetry-backend"] } | |
| ] | |
| }, | |
| { | |
| "id": "infrastructure", | |
| "title": "Infrastructure", | |
| "items": [ | |
| { "id": "runtime-platforms", "name": "Runtime Platforms (JVM/JS)", "deps": [] }, | |
| { "id": "container-runtime", "name": "Container Runtime", "deps": [] }, | |
| { "id": "data-store", "name": "Data Store (DB/Object)", "deps": [] }, | |
| { "id": "network-realtime", "name": "Network Realtime (Signaling/RTC)", "deps": [] }, | |
| { "id": "telemetry-backend", "name": "Telemetry Backend", "deps": [] } | |
| ] | |
| } | |
| ] | |
| } | |
| --- | |
| { | |
| "id": "kroki-diagram-as-a-service", | |
| "title": "Kroki — Diagram-as-a-Service Value Chain", | |
| "abstract": "Kroki exposes a simple HTTP interface and embeddable URLs that turn text-based diagram definitions (e.g., PlantUML, Mermaid, Graphviz) into SVG/PNG/PDF for docs and apps. User-visible value centers on fast, reliable rendering and easy embedding, enabled by an orchestrator that routes to multiple diagram engines, caching, and platform concerns (auth, rate limiting, observability) running on containerized infrastructure, storage, and edge delivery.", | |
| "categories": [ | |
| { | |
| "id": "user-experience", | |
| "title": "User Experience", | |
| "items": [ | |
| { "id": "http-api", "name": "HTTP API", "deps": ["render-orchestrator", "authn-authz", "rate-limiting", "url-encoder"] }, | |
| { "id": "doc-embeds", "name": "Embeddable Diagram URLs", "deps": ["http-api", "cdn", "cache-service"] }, | |
| { "id": "cli", "name": "CLI / Local Wrapper", "deps": ["http-api"] } | |
| ] | |
| }, | |
| { | |
| "id": "services", | |
| "title": "Rendering Services", | |
| "items": [ | |
| { "id": "render-orchestrator", "name": "Renderer Orchestrator", "deps": ["plantuml-engine", "mermaid-engine", "graphviz-engine", "bpmn-engine", "container-runtime", "secrets"] }, | |
| { "id": "svg-png-pdf", "name": "SVG/PNG/PDF Output", "deps": ["render-orchestrator"] }, | |
| { "id": "url-encoder", "name": "URL Encoder/Decoder", "deps": [] }, | |
| { "id": "cache-service", "name": "Response Cache", "deps": ["object-storage"] } | |
| ] | |
| }, | |
| { | |
| "id": "engines", | |
| "title": "Diagram Engines", | |
| "items": [ | |
| { "id": "plantuml-engine", "name": "PlantUML Engine", "deps": ["container-runtime", "secrets"] }, | |
| { "id": "mermaid-engine", "name": "Mermaid Engine", "deps": ["container-runtime"] }, | |
| { "id": "graphviz-engine", "name": "Graphviz/Dot Engine", "deps": ["container-runtime"] }, | |
| { "id": "bpmn-engine", "name": "BPMN Engine", "deps": ["container-runtime"] } | |
| ] | |
| }, | |
| { | |
| "id": "platform", | |
| "title": "Platform Services", | |
| "items": [ | |
| { "id": "authn-authz", "name": "AuthN/Z", "deps": ["secrets"] }, | |
| { "id": "rate-limiting", "name": "Rate Limiting", "deps": ["reverse-proxy"] }, | |
| { "id": "observability", "name": "Observability", "deps": ["metrics-backend", "log-backend"] }, | |
| { "id": "secrets", "name": "Secrets Management", "deps": ["object-storage"] } | |
| ] | |
| }, | |
| { | |
| "id": "infrastructure", | |
| "title": "Infrastructure", | |
| "items": [ | |
| { "id": "container-runtime", "name": "Container Runtime", "deps": [] }, | |
| { "id": "reverse-proxy", "name": "Reverse Proxy / Ingress", "deps": [] }, | |
| { "id": "cdn", "name": "CDN / Edge", "deps": [] }, | |
| { "id": "object-storage", "name": "Object Storage", "deps": [] }, | |
| { "id": "metrics-backend", "name": "Metrics Backend", "deps": [] }, | |
| { "id": "log-backend", "name": "Log Backend", "deps": [] } | |
| ] | |
| } | |
| ] | |
| } | |
| --- | |
| { | |
| "id": "plantuml-text-to-diagram", | |
| "title": "PlantUML — Text-to-Diagram Value Chain", | |
| "abstract": "PlantUML turns concise, text-based DSL into diagrams (sequence, class, activity, etc.) for IDEs, docs, and CI. User-visible value is fast authoring, live feedback, and reliable export (SVG/PNG/PDF), enabled by a parsing/skin pipeline, layout via Graphviz/DOT, and a Java-based runtime with caching and tooling integration.", | |
| "categories": [ | |
| { | |
| "id": "experience", | |
| "title": "User Experience", | |
| "items": [ | |
| { "id": "ide-integrations", "name": "IDE & Docs Integrations", "deps": ["cli-tool", "export-api"] }, | |
| { "id": "live-preview", "name": "Live Preview", "deps": ["renderer-core", "syntax-parser"] }, | |
| { "id": "cli-tool", "name": "CLI Tool", "deps": ["renderer-core", "file-io", "java-runtime"] }, | |
| { "id": "export-api", "name": "Export API (SVG/PNG/PDF)", "deps": ["renderer-core", "image-encoder", "pdf-generator"] } | |
| ] | |
| }, | |
| { | |
| "id": "authoring", | |
| "title": "Authoring & Syntax", | |
| "items": [ | |
| { "id": "syntax-parser", "name": "Syntax Parser (DSL)", "deps": [] }, | |
| { "id": "std-lib", "name": "Standard Library (Macros/Styles)", "deps": ["include-resolver"] }, | |
| { "id": "skin-engine", "name": "Skin & Theme Engine", "deps": ["std-lib"] }, | |
| { "id": "include-resolver", "name": "Include/Preprocessor Resolver", "deps": ["file-io"] } | |
| ] | |
| }, | |
| { | |
| "id": "pipeline", | |
| "title": "Rendering Pipeline", | |
| "items": [ | |
| { "id": "renderer-core", "name": "Renderer Core", "deps": ["syntax-parser", "skin-engine", "layout-engine", "logging"] }, | |
| { "id": "layout-engine", "name": "Layout Engine (Graphviz/DOT)", "deps": ["java-runtime"] }, | |
| { "id": "image-encoder", "name": "Image Encoder (Raster/SVG)", "deps": ["renderer-core"] }, | |
| { "id": "pdf-generator", "name": "PDF Generator", "deps": ["renderer-core"] } | |
| ] | |
| }, | |
| { | |
| "id": "platform", | |
| "title": "Platform & Infrastructure", | |
| "items": [ | |
| { "id": "java-runtime", "name": "Java Runtime", "deps": [] }, | |
| { "id": "file-io", "name": "File I/O", "deps": [] }, | |
| { "id": "logging", "name": "Logging", "deps": [] }, | |
| { "id": "cache-service", "name": "Cache Service", "deps": [] } | |
| ] | |
| } | |
| ] | |
| } | |
| --- | |
| { | |
| "id": "excalidraw-virtual-whiteboard", | |
| "title": "Excalidraw — Virtual Whiteboard Value Chain", | |
| "abstract": "Excalidraw provides a browser-based, hand-drawn style whiteboard with real-time collaboration, easy embedding, and export. User-facing value (fast sketching, sharing, and embedding) relies on a scene graph and rendering engine, real-time transport with signaling, and platform services for storage and simple security, all running on lightweight web infrastructure.", | |
| "categories": [ | |
| { | |
| "id": "experience", | |
| "title": "User Experience", | |
| "items": [ | |
| { "id": "whiteboard-ui", "name": "Whiteboard UI", "deps": ["rendering-engine", "input-handling", "asset-library", "real-time-collab"] }, | |
| { "id": "embed-sdk", "name": "Embed SDK", "deps": ["backend-api", "rendering-engine"] }, | |
| { "id": "export-service", "name": "Export (PNG/SVG/Clipboard)", "deps": ["rendering-engine", "scene-graph"] } | |
| ] | |
| }, | |
| { | |
| "id": "collaboration", | |
| "title": "Collaboration & Sharing", | |
| "items": [ | |
| { "id": "real-time-collab", "name": "Real-time Collaboration", "deps": ["realtime-transport", "signaling", "encryption", "persistence"] }, | |
| { "id": "shareable-links", "name": "Shareable Links", "deps": ["backend-api", "encryption"] }, | |
| { "id": "asset-library", "name": "Asset & Shape Library", "deps": ["content-storage", "backend-api"] } | |
| ] | |
| }, | |
| { | |
| "id": "authoring", | |
| "title": "Authoring & Rendering", | |
| "items": [ | |
| { "id": "scene-graph", "name": "Scene Graph", "deps": ["state-manager"] }, | |
| { "id": "rendering-engine", "name": "Rendering Engine", "deps": ["canvas-runtime", "scene-graph"] }, | |
| { "id": "input-handling", "name": "Input Handling (Pointer/Keyboard)", "deps": ["scene-graph"] }, | |
| { "id": "state-manager", "name": "State Manager", "deps": ["persistence"] } | |
| ] | |
| }, | |
| { | |
| "id": "connectivity", | |
| "title": "Connectivity", | |
| "items": [ | |
| { "id": "realtime-transport", "name": "Realtime Transport", "deps": ["webrtc"] }, | |
| { "id": "signaling", "name": "Signaling", "deps": ["signaling-server"] } | |
| ] | |
| }, | |
| { | |
| "id": "platform", | |
| "title": "Platform Services", | |
| "items": [ | |
| { "id": "encryption", "name": "Encryption (E2EE)", "deps": [] }, | |
| { "id": "persistence", "name": "Persistence (Local-first Sync)", "deps": ["app-server", "object-storage"] }, | |
| { "id": "backend-api", "name": "Backend API", "deps": ["app-server"] }, | |
| { "id": "content-storage", "name": "Content Storage", "deps": ["object-storage"] } | |
| ] | |
| }, | |
| { | |
| "id": "infrastructure", | |
| "title": "Infrastructure", | |
| "items": [ | |
| { "id": "canvas-runtime", "name": "Canvas Runtime (HTML5)", "deps": [] }, | |
| { "id": "app-server", "name": "App Server", "deps": [] }, | |
| { "id": "object-storage", "name": "Object Storage", "deps": [] }, | |
| { "id": "webrtc", "name": "WebRTC", "deps": [] }, | |
| { "id": "signaling-server", "name": "Signaling Server", "deps": [] } | |
| ] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment