Modules

Our stack is built in NodeJS and we use libsodium for our cryptography. At the base of the stack lies hypercore, multifeed and kappa-core. And to access that intuitively, we have an ExpressJS API and a VueJS UI with Electron support.

We're currently investigating cross-platform support, including setting up FUSE mounts on Windows and easily packaged installers for Windows, MacOS and Linux.


Client

  • cobox-ui - a JavaScript front-end built with VueJS. Talks to cobox-server's REST API.

  • cobox-server - a JSON HTTP/S REST API to run on the client. Exposes end-points to a front-end to manage your groups and blind replicators, setup cobox devices, and perform admin functionality.

  • cobox-cli - a command-line interface build with javascript library Yargs. Talks to cobox-server's REST API.

  • cobox-group - adds content en/decryption and kappa-drive to cobox-replicator. Provides an additonal feed and indexes for group specific messages, and additional indexes for kappa-drive state / history.

  • paper-key-backup - export cryptographic keys to an easily printable format.

  • kappa-drive - multiwriter peer-to-peer filesystem, built on kappa-core and hyperdrive.

  • kappa-drive-mount - mount a kappa-drive using FUSE.


Hub

  • cobox-os - a devuan image builder for use on ARM devices or in VMs. Easy installation and configuration of your cobox device, installing and running cobox-hub

  • cobox-hub - utilises cobox-admin-group with additional setup functionality including UDP packet broacast over a LAN. Enables cobox device administation over both a local or remote connection


Shared

  • cobox-constants - system wide constants

  • cobox-config - local configuration settings stored in YAML

  • cobox-group-store - the repository pattern for finding a record based on a dynamic set of parameters from an existing collection. initialize and cache multiple cobox-group instances in a single node process.

  • cobox-replicator - base model for p2p private groups, containing storage and application layer data

  • cobox-admin-group - RPC-style command execution over a multifeed instance. Content en/decryption included

  • cobox-crypto - cryptographic primitives. All cryptography is compatible with the existing Dat ecosystem for future extensibility and interoperability.

  • hypercore-crypto-encoder - a content encryption encoder for hypercore using an encryption key.

  • kappa-view-query - a materialised view for kappa-core, aggregating all feed data in a multifeed instance, serving a dynamic and intuitive map-filter-reduce querying engine.


Package Tree

Here's how they're all laid out. We hope this helps you familiarise yourself with the project's structure, there's a lot of moving parts!

cobox-server
    │
    ├── cobox-config
    │
    └── cobox-group-store
            │
            ├──cobox-admin-group
            │      │
            │      └──cobox-replicator
            │
            └──cobox-group
                   │
                   ├── kappa-core
                   │
                   ├── cobox-replicator
                   │
                   ├── cobox-log
                   │       │
                   │       ├── kappa-sparse-indexer
                   │       │
                   │       ├── kappa-view-query
                   │       │
                   │       └── leveldb / subleveldown
                   │
                   └── kappa-drive
                           │
                           ├── hyperdrive
                           │       │
                           │       └── hypercore
                           │
                           ├── corestore
                           │
                           ├── mountable hypertrie
                           │
                           └── leveldb / subleveldown
                                   │
                                   └── kappa-view-kv

cobox-hub
    │
    └── cobox-admin-group
        │
        ├──cobox-log
        │
        └──cobox-replicator


cobox-replicator
    │
    ├── cobox-crypto
    │   │
    │   └── hypercore-crypto-encoder
    │
    ├── kappa-core
    │
    ├── multifeed
    │   │
    │   └── hypercore
    │
    ├── leveldb
    │   │
    │   └── kappa-view-query
    │
    ├── kappa-drive-mount
    │
    ├── hyperswarm
    │
    └── hypercore