GyreJS
Uni-directional data flow library. Based on CQRS (Command and Query Responsibility Segregation) and Event sourcing principles.
This is an experimental project.
Vision / Motivation
With projects like ReactJS emerging there is a lot of attention lately to uni-drectional data flow concepts. While not a new idea there are currently a lot of projects exploring this realm. E.g. all the flux-like libraries currently emerging for ReactJS (like Redux, alt, etc.).
At the moment, when using libraries like Alt, Reflux, Redux or the like, for every new project usually the developers has to set up actions, a store and anything related. Most of this work is done again and again for new projects.
This projects introduces the concept of gyres which are basically a preset of commands/events, aggregates and projections. The community can create new presets which can be used by anyone else for their projects creating a low barrier of entry for using uni-directional data flow (flux like) approaches.
Features
- Enforces uni-directional data flow using actions, reduces, store and selectors.
- Minimal surface API
- Isomorphic
Examples
See examples/*
for now. You can run npm run start
to see the example in action on http://localhost:9000.
Ecosystem
Gyres
- Smart REST (Relay inspired gyre)
- Local - Simple key/value
Alternatives
Versioning
As long as the library is in exploratory/beta phase versions will be < 1.0 and breaking changes may occur on minor or patch version updates. Once 1.0 hits the project will adhere to semantic versioning.
Inspiration
DDD, CQRS, event sourcing, RX, Redux, GraphQL/Relay, Falcor, materialized views.
Articles
Libraries
Gyre?
Gyre = vortex. A wink to unidirectional data flow.
Crude roadmap
- The debugger functionality will eventually be split up into a separate project