At a Glance
- Why
- Traditional charting libraries couple visual definitions with rendering logic, making visualizations hard to version, review, and reuse across different contexts.
- Benefit
- Separates chart specifications from rendering, enabling charts to be defined declaratively, versioned in git, and rendered in any compatible environment.
- For
- Data analysts, visualization engineers, and teams who need reproducible, versionable chart definitions that can be reviewed and deployed independently of rendering code.
- Use
- Define charts using JSON/YAML specifications, version them in source control, and render them using the ChartSpec renderer in your application or workflow.
Architecture
Context Diagram
How ChartSpec interacts with users and data sources:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Data Analyst / Dev β
β (creates chart specifications) β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β
β writes/maintains
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Chart Specification β
β (JSON/YAML files) β
β β’ Data source config β
β β’ Visual encodings β
β β’ Interaction definitions β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β
β consumed by
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ChartSpec β
β (specification engine) β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Parser β β Validator β β Renderer β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β
β fetches
βΌ
ββββββββββββββββ
β Data Sources β
β (APIs, DBs) β
ββββββββββββββββ
Internal Architecture
Components inside ChartSpec:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β ChartSpec Core β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β Specification Parser β β β β β’ Reads JSON/YAML definitions β β β β β’ Schema validation β β β β β’ Resolves references β β β βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ β β β β β βΌ β β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β Transformation Layer β β β β ββββββββββββ ββββββββββββ ββββββββββββ β β β β β Data β β Visual β β Scale β β β β β βTransform β β Encoding β β Mapping β β β β β ββββββββββββ ββββββββββββ ββββββββββββ β β β βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ β β β β β βΌ β β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β Rendering Engine β β β β β’ SVG generation β β β β β’ Canvas rendering β β β β β’ Interactive layer β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
How to Use
-
Install ChartSpec
Add to your project:
npm install @gitbrainlab/chartspec - Create a chart specification Define your chart in a JSON or YAML file with data source, visual encodings, and interaction rules.
- Validate the specification Use the ChartSpec validator to ensure your specification is correct and complete.
-
Render the chart
Import and render:
chartspec.render(spec, targetElement)to display your visualization. - Version and iterate Commit your spec files to version control and iterate on visualizations through code review.