For specific information about decisions made in development see [here](wiki/wiki.md).
FRMS was initially written almost entirely in [Go](https://go.dev/) with some bash/python helper scripts.
Go was used primarily for its emphasis on readable and maintainable code as well as its approach to concurrent applications.
Creating software capable of scaling up to many reactors made heavy use of [Goroutines](https://go.dev/tour/concurrency/1) especially on the server.
To begin developing use `git clone git@github.com:fl-src/FRMS.git` to clone the repository.
### Installation
### Installation
The project uses a make alternative called [task](https://github.com/go-task/task) written in go for building and testing.
After using `git clone git@github.com:fl-src/FRMS.git` to clone the repository, you can then build binaries of the two commands `server` and `reactor` for testing.
The binaries will be put into the `bin/` folder and will be labeled with the platform and architecture they were built for.
**WARNING**: The reactor binary currently relies on a Linux cli application to interact with the i2c bus.
This may cause undefined behavior when run on a device without the tools installed. More information about this design choice can be found [here](wiki/reactor.md#i2c-issues)