Skip to content
Network Based Data Layer: C++ Framework for Managing Application State Across Network
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Network Based Data Layer

C++ Application State Management Library


This project is a work in progress.

It now relies on the experimental language feature Parametric Expressions (P1221).

There are two compiler forks, one of Clang and another that applies the changes in that fork to Emscripten's fork of Clang:

I'm keeping both up to date with bug fixes so I recommend using the Emscripten version since it supports all plarforms:

  • X86
  • ARM
  • JsBackend

Both are available on Dockerhub and can be used with CppDock. (see the Build section below)

Basic Features

  • Context object for managing state, network connection, and message dispatching
  • Concepts for wrapping server/client implementations and Stores
  • Concepts for generic recursive visitation of arbitrary data structures
  • Concepts for serialization of Boost.Hana and user-defined data types
    • API hash versioning
  • Promise interface for chaining events
  • A variant type optimized for use on a single thread, with a safe interface, and most importantly it plays well with the serialization facilities which is used for dispatching messages and representing state.

Features for Web Frontends

  • Rendering state on a web frontend via DOM manipulations. (Requires Emscripten)
    • Navigation/Location is available as state
  • Server/Client websocket integration and Browser Client Websocket API integration

Features Coming Soon

  • Database persistence integration
  • Multi-platform UI toolkit
  • Documentation

Build the Development Environment

Nbdl uses CppDock with Docker to create a development environment with all of the dependencies installed.

See the cppdock.json file for information about dependencies.

To build both development environment images run the following:

cppdock build develop && cppdock build web_develop

To run the containers use the cppdock dev command:

cppdock dev develop

Then in the container's shell you can run one of the examples:

root@f2b146e7bad9:/opt/build# make run.example.pipes

Note: You may have to build the CppDock platform images locally as both projects are in a state of flux.

You can’t perform that action at this time.