# Documentation

## Building and Developing

-   Documentation about building from the command line can be found in
    [the build guide](./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)

## 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_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.
