GraphQL Voyager is an interactive GraphQL schema explorer that visualizes any GraphQL API as an interactive graph. It consumes GraphQL introspection data (or SDL) and renders a navigable representation of the schema's types, fields, and relationships using Graphviz and SVG. The application is built with React and TypeScript, offering multiple consumption methods: a standalone bundle for direct browser use, an NPM package for integration with bundlers like Webpack, and middleware adapters for Express, Hapi, and Koa frameworks. The core functionality involves processing introspection JSON to extract type information, filtering out internal types (like Relay) and deprecated fields, and constructing a graph where nodes represent GraphQL types and edges represent relationships (such as field types). This graph is rendered via a Graphviz worker, with the resulting SVG enhanced for interactivity (tooltips, pan/zoom, click-to-explore). A companion documentation panel allows users to inspect details of selected types, including fields, arguments, and directives. Beyond the visualization, Voyager includes several reusable utilities that demonstrate thoughtful engineering: an LRU cache implemented in localStorage for efficient SVG rendering caching, a React hook for managing promise states (loading, error, success), and a flexible object matching utility. The project maintains a robust development workflow with TypeScript, Webpack, Playwright end-to-end testing (via Docker), and automated dependency updates via Dependabot. Recent commits indicate active maintenance, and the codebase adheres to modern React and TypeScript practices.
The dot package is a Go library for generating Graphviz DOT language graphs. It provides a fluent API to construct graphs, nodes, edges, and set attributes. The library supports features like subgraphs, clusters, record-shaped nodes, bidirectional edges, and Mermaid diagram output. It includes an extension package (dotx) for creating hierarchical graph composites. The code is well-structured, thoroughly tested, and has zero external dependencies beyond the Go standard library.
The cdk-dia tool is a CLI utility that generates visual diagrams from AWS CDK applications. It reads the synthesized cloud assembly (tree.json) produced by `cdk synth` and constructs a hierarchical tree of CDK constructs. This tree is then transformed into a diagram representation, where nodes represent constructs (annotated with AWS service icons and labels) and edges represent relationships resolved via CloudFormation intrinsic functions. The tool supports customization via CDK construct decorators (e.g., to collapse or ignore nodes) and can output diagrams in two formats: static PNGs via Graphviz or interactive HTML via Cytoscape. The architecture is modular, separating concerns into CDK tree parsing (`src/cdk/`), diagram generation (`src/diagram/`), and rendering (`src/render/`). The diagram generation process involves recursively building a component tree, resolving edges, applying customizations, and post-processing (collapsing/ignoring nodes). Renderers are selected via a strategy pattern, allowing easy extension to new output formats. The tool demonstrates strong encapsulation in its core data structures (Tree and Node classes) and link management (ComponentLinks class), which are largely independent of CDK-specific logic and could be reused in other tree-based applications. Maintenance appears active, with a recent commit history and ongoing issue activity. Dependencies are up-to-date (no Dependabot alerts), and the tool aligns with current CDK v2 practices. Technical drift is low, as the codebase avoids deprecated APIs and maintains compatibility with modern TypeScript and Node.js ecosystems. The project includes comprehensive snapshot tests to ensure correctness across various CDK infrastructure patterns, from simple queue-topic subscriptions to complex CI/CD pipelines.
This repository provides 'Diagrams', a Python library that lets you define cloud system architecture diagrams as Python code. It renders diagrams using Graphviz, supporting a wide range of cloud providers (AWS, Azure, GCP, Kubernetes, etc.) through auto-generated node classes. The library includes a CLI tool to execute diagram scripts and a web-based playground (React/TypeScript) that runs the library in-browser via Pyodide, allowing interactive editing and export. The architecture is a library with a CLI entry point, plus a separate SPA playground. Key entry points are the `diagrams` CLI command and the `Diagram`/`Node` classes. External dependencies include Graphviz (system binary), Jinja2, and for the playground: Pyodide, @hpcc-js/wasm-graphviz, React, CodeMirror. The codebase is well-structured with a code generation pipeline for provider nodes, comprehensive testing, and a polished user experience.
memory_graph is a Python library for visualizing the structure of Python data as graphs, primarily used for debugging and teaching concepts like references, mutability, and shallow/deep copy. It takes any Python data (e.g., locals(), call stack frames) and generates a Graphviz-based graph (PDF, PNG, SVG) showing the hierarchical relationships and shared references. The library supports multiple node types (leaf, linear, key-value, table), configurable slicing to limit graph size, call stack visualization with IDE-specific stack frame filtering, and extensions for numpy, pandas, and PyTorch types. It is designed to be used interactively in debuggers (VS Code, PyCharm, etc.) or programmatically via functions like `show()`, `render()`, and `block()`. The codebase is well-structured with clean separation of concerns (node types, slicing logic, configuration, HTML table generation) and includes unit tests for core components.
Kaitai Struct is an umbrella project that provides a declarative language for describing binary data structures and a compiler to generate parser code in multiple target languages. The repository coordinates submodules for the compiler, runtimes for various languages (Java, Python, Ruby, etc.), format definitions, visualizer, tests, benchmarks, and documentation. Users describe a format in a .ksy file, compile it with the kaitai-struct-compiler to generate language-specific parser code, and use the corresponding runtime to parse binary data. The project includes CI workflows for building the compiler and publishing artifacts, and maintains a collection of ready-to-use format descriptions.
pydot is a pure Python library for creating, reading, editing, and rendering graphs in Graphviz's DOT language. It provides an object-oriented interface with classes like Graph, Node, Edge, Subgraph, and Cluster, allowing programmatic graph construction. The library can parse existing DOT files or strings into pydot objects, and render graphs to multiple output formats (PNG, SVG, PDF, etc.) by invoking external Graphviz executables. It depends on pyparsing for DOT parsing and on a separate Graphviz installation for rendering. The codebase demonstrates moderate craftsmanship with dynamic method generation for attributes and formats, an immutable FrozenDict class, and context manager support for nested graph building. However, it carries some technical debt: a vendored copy of CPython's tempfile module, incomplete type annotations, and a handful of long-standing known bugs (marked xfail in tests). The library is actively maintained with CI workflows across multiple Python versions and operating systems, but the dependency on an external binary and the vendored stdlib code are moderate risks.
GraphvizOnline is a client-side Single Page Application (SPA) designed for editing and rendering Graphviz DOT language diagrams directly within the browser. The architecture is purely frontend, utilizing the Ace Editor library for syntax highlighting and `viz.js` (Graphviz compiled to JavaScript/WebAssembly) for rendering. The application manages state via URL parameters and hash fragments, enabling shareable links and presentation modes without backend dependencies. It functions as a self-contained static web tool, relying on bundled dependencies for core functionality.