ValueFlows economic resource coordination software: Holochain implementation
A resource accounting framework and suite of apps for building economic coordination applications of any kind.
This Holochain application is actually a suite of cooperating applications, similar to 'microservices' in traditional client/server web architecture. Each app is packaged as a 'DNA'- a concept specific to Holochain apps which essentially refers to a content-addressable network with its own application logic; in other words, Holochain apps are protocols defined as self-contained code bundles and are referenced by the hash of that code.
HoloREA is built to align with the Open App Ecosystem's ideologies and goals as well as that of the Free Software Movement. Thus HoloREA's 'DNAs' can be thought of as a framework for composing more complex end-user Holochain apps. For example, you might create a Holochain app to manage the internal logic of your cooperative or business and have it publish events out to separate HoloREA 'observation' networks in order to share resources with distributors and suppliers. You might also choose to swap out HoloREA's 'agreements' module with your own logic for managing agreements; or even combine HoloREA's own modules in nonstandard arrangements, like having multiple separate 'observation' modules communicating with a shared 'planning' space.
example/is filled with end-user applications built on the HoloREA framework.
happs/contains subdirectories corresponding to separate Holochain app DNA packages, which expose their data as independent, isolated DHTs. Each DNA is composed of multiple zomes which describe semi-independent bits of functionality within that app DNA.
lib/contains library code that is used by the various hApps (Holochain apps). Note that shared code is necessary to facilitate sharing of data between DHTs, as the de/serialisation logic is defined by Rust structs- hence this separation.
hdk_graph_helpers/is the result of abstracting away common functionality used in zome callback handlers to reduce boilerplate.
vf_core/contains core record structure types and type aliases for defining & linking records.
vf_*/the other folders in this directory correspond to the actual ValueFlows record structures and their behaviours, especially conversions.
scripts/just has utility script files used for DevOps tasks and configuring the repo.
- The NPM scripts in
package.jsonat the top level of the repo are used to orchestrate test commands & run the apps for development. Please see the file for reference.
- Ensure you have all necessary required software installed.
yarnfrom this directory to bootstrap the repo.
For information on our workflow and contribution guidelines, see CONTRIBUTORS.md.
Developers wishing to contribute should also refer to recommended dev tools for assistance in configuring your workstation for the most streamlined and pleasant development experience.
See also the wiki for more information.