About this project

Semiotic is a React data visualization library designed for AI-assisted development. It combines broad chart coverage with AI tooling, supporting network graphs, streaming data, and coordinated views. The library provides structured schemas, diagnostics, and rendering evidence to help coding assistants implement, check, and repair chart code. Key features include: - **Network visualization**: Force-directed graphs, Sankey diagrams, chord diagrams, tree layouts, treemaps, circle packing, and orbit diagrams as React components with a consistent prop API. - **Streaming data**: Realtime charts rendered on canvas at 60fps with a ref-based push API, including decay, pulse, and staleness encoding for monitoring dashboards. - **First-class annotations**: Data-bound annotation objects that move with charts and render through browser, SSR, and export. - **AI tooling**: Includes `semiotic/ai` for schema-backed chart capability catalog, `ai/schema.json` for machine-readable prop schemas, `npx semiotic-mcp` for MCP server chart rendering, and `npx semiotic-ai --doctor` for CLI validation. - **Diagnostics**: `diagnoseConfig` and `auditData` functions for anti-pattern detection and numeric preflight checks. - **Accessibility**: Built-in error boundaries, dev-mode validation, ARIA labels, keyboard-navigable legends, and accessible data tables. - **Modular imports**: Family subpaths like `semiotic/xy`, `semiotic/geo`, `semiotic/value`, and `semiotic/realtime` for smaller bundles, with tree-shaking support. - **Server-side rendering**: `semiotic/server` for rendering charts to static SVG or images. - **Data utilities**: `semiotic/data` for binning, rollup, groupBy, pivot, and Vega-Lite conversion. - **Serialization**: Charts serialize to/from JSON via `toConfig`, `fromConfig`, `toURL`, enabling round-trip from notebooks and AI-generated specs. The library includes bundle size tables for various imports, ranging from small utilities (0.2 KB) to full chart APIs (374 KB). It also provides physics-based charts (GaltonBoardChart) with optional Matter.js and Rapier.js adapters. Semiotic is positioned for projects that need network graphs alongside time series, streaming data, and coordinated views beyond standard charting libraries.