# StartOS Backend

- Requirements:
  - [Install Rust](https://rustup.rs)
  - Recommended: [rust-analyzer](https://rust-analyzer.github.io/)
  - [Docker](https://docs.docker.com/get-docker/)
  - [Rust ARM64 Build Container](https://github.com/Start9Labs/rust-arm-builder)
  - Mac `brew install gnu-tar`
- Scripts (run within the `./backend` directory)
  - `build-prod.sh` - compiles a release build of the artifacts for running on
    ARM64
- A Linux computer or VM

## Structure

The StartOS backend is packed into a single binary `startbox` that is symlinked under
several different names for different behaviour:

- startd: This is the main workhorse of StartOS - any new functionality you
  want will likely go here
- start-cli: This is a CLI tool that will allow you to issue commands to
  startd and control it similarly to the UI
- start-sdk: This is a CLI tool that aids in building and packaging services
  you wish to deploy to StartOS

Finally there is a library `startos` that supports all of these tools.

See [here](/backend/Cargo.toml) for details.

## Building

You can build the entire operating system image using `make` from the root of
the StartOS project. This will subsequently invoke the build scripts above to
actually create the requisite binaries and put them onto the final operating
system image.

## Questions

If you have questions about how various pieces of the backend system work. Open
an issue and tag the following people

- dr-bonez
