Skip to content

Get started with Doover

Follow the instructions below to create new Doover packages. Or check out our template repositories to help you get started quickly.

Our Data Engine

The Doover Data Engine is the system that manages the communications between devices and users in within Doover. The Doover Data engine is a channels based system. A channel is like a small chatroom - a space where devices and users exchange messages and record activity. Channels are like MQTT topics, except each message is recorded.

Doover drivers allow developers to define the interactions between users and devices and Doover Data Channels.

Devices and users and publish and subscribe to channels. Doover also allows you to create 'Tasks', small python scripts that are run when a channel is published to. This allows Doover to provide highly customised functionality for each user.

Depending on the application of Doover, Doover drivers allow devices to publish, subscribe or read channels or define 'Tasks' performed when channels recieved a message.

See what a doover_config.json file looks like, a file that sets up the relationships between channels.

{
    "deployment_package_dir": "processor/",
    "ul_payload_formatter" : "payload_formatters/ul_formatter.js",
    "dl_payload_formatter" : "payload_formatters/dl_formatter.js",
    "processor_deployments" : {
        "processors" : [
            {
                "name" : "message_processor",
                "processor_package_dir" : "processor/"
            }
        ],
        "tasks" : [
            {
                "name" : "on_uplink",
                "processor_name" : "message_processor",
                "task_config" : {
                    "message_type": "UPLINK"
                },
                "subscriptions" : [
                    {
                        "channel_name" : "tts_uplink_recv",
                        "is_active" : true
                    }
                ]
            },
            {
                "name" : "on_downlink",
                "processor_name" : "message_processor",
                "task_config" : {
                    "message_type": "DOWNLINK"
                },
                "subscriptions" : [
                    {
                        "channel_name" : "ui_cmds",
                        "is_active" : true
                    }
                ]
            },
            {
                "name" : "on_deploy",
                "processor_name" : "message_processor",
                "task_config" : {
                    "message_type": "DEPLOY"
                },
                "subscriptions" : [
                    {
                        "channel_name" : "deployments",
                        "is_active" : true
                    }
                ]
            }
        ]
    },
    "deployment_channel_messages" : [
        {
            "channel_name" : "ui_cmds",
            "channel_message" : {
                "cmds" : {}
            }
        },
        {
            "channel_name" : "ui_state",
            "channel_message" : {
                "state" : null
            }
        },
        {
            "channel_name" : "deployments",
            "channel_message" : {
                "new_deployment" : true
            }
        }
    ]
}

Import Doover

Import the Markdoc library in your app:

const DooverUi = require('@doover/doover-ui');

If you're using ESM:

import DooverUi from '@doover/doover-ui';