Chronograph is an open-source reactive state management system, implemented in TypeScript and developed at Bryntum. It powers the business logic of the Bryntum Gantt.
ChronoGraph has the following features:
- Cancelable transactions
- O(1) undo/redo
- Lazy/strict, sync/async computations
- Data branching
- Mixed computational unit (user input/calculated value)
- Unlimited stack depth
- Disciplined approach to cyclic computations
- Entity/Relation framework
And the following features are very feasible:
- Possibility to split the whole computation into chunks (think
requestAnimationFrame
) - Possibility for breadth-first computation (think network latency)
- Mapping to SQL
- Mapping to GraphQL
Reactive computations has become a popular trend recently, popularized by the React, Vue and Angular triade. However, all of the latter are user interface frameworks.
ChronoGraph, in contrast, focuses on reactive computations, describing generic data graphs (such as Gantt project plans). It is designed to handle extremely large graphs - up to several hundred thousands "atoms". It also includes a small Entity/Relation framework, which maps to regular ES6 classes.
npm install @bryntum/chronograph --save
You should be able to quickly pick up the base concept of reactivity from the Basic features guide.
To find out about the remaining (and most interesting) features of ChronoGraph, continue to the Advanced features guide.
The guides contain extensive references to the API docs
The API surface is currently intentionally small and some features are not documented. Please reach out if you need something specific.
ChronoGraph aims to have excellent performance. To reason about it objectively, we wrote a benchmark suite. More details in the Benchmarks guide.
We welcome all feedback. Please tell us what works well in ChronoGraph, what causes trouble and any other features you would like to see implemented.
Please report any found bugs in the issues tracker
Ask questions in the forum
Chat live at Discord
Follow the development blog
MIT License
Copyright (c) 2018-2020 Bryntum, Nickolay Platonov