= BallChallenge :toc: :toclevels: 3 :toc-placement!: ifdef::env-github[] :tip-caption: :bulb: :note-caption: :information_source: :important-caption: :heavy_exclamation_mark: :caution-caption: :fire: :warning-caption: :warning: endif::[]
toc::[]
== Elastic Node implementations
NOTE: link:enV5/[enV5 folder]
[.lead] Provide the implementation for the Elastic Node hardware to be used.
== Cloud Backend
NOTE: link:cloud/[cloud folder]
[.lead] Provide the backend cloud side as the communication/service endpoint for the Hardware.
The required tools can be started with the provided link:cloud/docker-compose.yml[docker compose file].
CAUTION: A running MQTT Broker is assumed!
== Recommended Environment
=== Dependencies
https://gcc.gnu.org/[GCC]:: -> C Compiler + Can be installed via your local package manager like dnf, apt or brew.
https://cmake.org[CMake]:: -> Build System + Can be installed via your local package manager like dnf, apt or brew.
https://ninja-build.org/[Ninja] [OPTIONAL]:: -> Build Tool + Can be installed via your local package manager like dnf, apt or brew.
https://www.python.org/[Python] [OPTIONAL]:: -> Python Interpreter + Can be installed via your local package manager like dnf, apt or brew. + Used for development Server and Pre-commit!
https://nodejs.org/en[Node.js] [OPTIONAL]:: -> Javascript Runtime + Can be installed via your local package manager like dnf, apt or brew. + Used for Commitlint hook of Pre-Commit!
=== Pre-Commit [optional]
To ensure our commit guidelines, we recommend using https://commitlint.js.org/#/[Commitlint] in combination with https://pre-commit.com/[Pre-Commit]. To assure you don't corrupt your system we recommend installing the dependencies inside a https://python.land/virtual-environments/virtualenv#How_to_create_a_Python_venv[virtual environment].
.Installation
npm ci
pre-commit install
to register the provided git hooksNOTE: Node.js is required for Commitlint!
=== IDE
We recommend using CLion as your IDE, because this is our standard IDE and all necessary configurations are distributed with this repository.
Start Clion and import the repository folder as a new project. When CLion has opened the folder and all required tools are installed, the IDE will now initialize the build folder, which holds all cmake generated build files.
To build and execute the unit tests, it is recommended to run the 'All CTest' target with the 'UnitTests' profile!