# Documentation

## Building and Developing

-   A quick start guide to building a demo application and controller is
    available in the [Getting started](./getting_started/) guide
-   A guide to new cluster and device type development is available in the
    [New Cluster and Device Type Developement Guide](./cluster_and_device_type_dev/)
-   Documentation about building from the command line can be found in
    [the build guide](guides/BUILDING.md)
-   Documentation about running [cirque](https://github.com/openweave/cirque)
    tests can be found in
    [the cirque test guide](../src/test_driver/linux-cirque/README.md)
-   Documentation about standard build & development flows using
    [Visual Studio Code](https://code.visualstudio.com/) can be found in
    [the development guide](./VSCODE_DEVELOPMENT.md)

## Platform Guides

-   Various guides are available [here](./guides/README.md) that cover platform
    bring up, testing, and various troubleshooting things.

## Project Flow

-   Documentation about general project usage of GitHub, and project tools is
    documented in [the project flow](./PROJECT_FLOW.md)

## Style Guide

-   Documentation about style is documented in
    [the style guide](./style/style_guide.md)
-   Additional documentation about more specific files are in the
    [style folder](./style/)

## Third Party Tools

Some tools and utilities are dependent on third party tools, such as Docker.

[Docker](https://www.docker.com) is an excellent way to have stable build
environments that don't pollute the host OS. It is also much easier to maintain
stability across multiple host environments. Install stable version of
[Docker Desktop](https://www.docker.com/products/docker-desktop) relevant to
your native OS (macOS or Windows). Once installed, you can run docker commands
from the shell/terminal.
