Our Store Story

Our Store Story

Observable Store Services

nep.work uses Dan Wahlin's minimal in size, maximal in awesomeness ObservableStore. Here are some key services that nep.work's store exposes.

Invariants

All settings and preferences, and configs, that must remain invariant for the given user session or all sessions, are available via push for all subscibers through the invariants.service.

Ledger

All application history changes and application's contextual changes are available via push for all subscibers through the ledger.service.

History

All application history changes and a log of all historically significant works are available via push for all subscibers through the history.service.

Historical Work

A log of all historically significant works are available via push for all subscibers through the history-work.service.

Historically significant works are defined as those marked as essential works in our specification.

Herder

A herder is akin to a ZooKeeper because it redirects streams to different relevant topic sources based on the topics being currently herded by the herder.service.

Database

The history service uses the database.service to persist history updates.

This history service's persist method is used by the Ledger to send the history persist request.

Transaction

Any exchange with any third party remote service is defined as a transaction.

SideEffect<T> free transactions can be rolled back whereas Pure<T> transactions can always be rolled back.

All transactions can be monitored by the transaction.service if the transaction service and/or annotation is used for a given DB or event queue transaction.


Others

Bucket

Service for couch buckets.

Catchup

Service for catching up with remote couch buckets.

CovHub

Models for all the services in this folder.

Crypto

Context dependent required encryption provider.

Overlay

Any additional context that can be overlaid onto an exist component or known state can be accessed from this service.

Sim

All controls and setups for a simulation can be accessed from this service.

Test

All controls and setups for a test simulation can be accessed from this service.

Work

All actions done by the CovHub services itself is defined as work whereas all actions from the users are defined as work inputs.

All works and work inputs for those works are available for read via work.service.