# Starting The Backend The clan-cli contains the command line interface as well as the graphical webui through the `clan webui` command. Start the web ui with ```bash clan webui --reload --no-open --log-level debug --populate --emulate ``` - The `--populate` flag will automatically populate the database with dummy data - To look into the endpoints open up a swagger instance by visiting: http://localhost:2979/docs - The `--emulate` flag will automatically run servers the database with dummy data for the fronted to communicate with (ap, dlg, c1 and c2) - To look into the emulated endpoints go to http://localhost:2979/emulate # API Documentation Api documentation can be found in the folder `pkgs/clan-cli/tests/openapi_client/docs/` For Entity object go to - [tests/openapi_client/docs/EntitiesApi.md](tests/openapi_client/docs/EntitiesApi.md) - [tests/openapi_client/docs/EventmessagesApi.md](tests/openapi_client/docs/EventmessagesApi.md) - [tests/openapi_client/docs/ServicesApi.md](tests/openapi_client/docs/ServicesApi.md) - [tests/openapi_client/docs/ResolutionApi.md](tests/openapi_client/docs/ResolutionApi.md) - [tests/openapi_client/docs/RepositoriesApi.md](tests/openapi_client/docs/RepositoriesApi.md) # Building a Docker Image To build a docker image of the frontend and backend be inside the `pkgs/clan-cli` folder and execute: ```bash nix build .#clan-docker ``` This will create a symlink directory called `result` to a tar.gz docker file. Import it by executing: ```bash docker load < result ``` And then run the docker file by executing: ```bash docker run -p 127.0.0.1:2979:2979 clan-docker:latest ``` - To change parameters in the generated docker image edit the file : [flake-module.nix at line 22](flake-module.nix) - Documentation on `dockerTools.buildImage` you can find here: https://nix.dev/tutorials/nixos/building-and-running-docker-images.html ## Docker build with UI changes If changes to the UI have been made, and you want them to propagate to the docker container edit the file: [../ui/nix/ui-assets.nix](../ui/nix/ui-assets.nix). This is where a release version of the frontend is downloaded and integrated into the cli and the docker build. To do this first execute ```bash nix build .#ui --out-link ui-release ``` Make a tarball out of it called `ui-assets.tar.gz` ```bash tar -czvf ui-assets.tar.gz ui-release/lib/node_modules/clan-ui/out/ ``` Upload ui-assets.tar.gz to gitlab. To get the `GITLAB_TOKEN` go to [repo access tokens](https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/settings/access_tokens) and generate one. Then execute ```bash export GITLAB_TOKEN="" ``` ```bash curl --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ --upload-file ./ui-assets.tar.gz \ "https://git.tu-berlin.de/api/v4/projects/internet-of-services-lab%2Fservice-aware-network-front-end/packages/generic/ui-assets/1.0.0/ui-assets.tar.gz" ``` You can find your uploaded package at the [package registry](https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/packages) And export the download url into a variable: ``` export url="https://git.tu-berlin.de/api/v4/projects/internet-of-services-lab%2Fservice-aware-network-front-end/packages/generic/ui-assets/1.0.0/ui-assets.tar.gz" ``` Now execute the command: ```bash cat > "../ui/nix/ui-assets.nix" < ``` These debugging and testing methods will help you identify and fix issues in your backend code efficiently, ensuring the reliability and robustness of your application. ## Run Web UI in VSCode Useful for vscode run and debug option ```bash python -m clan_cli.webui --reload --no-open ``` Add this `launch.json` to your .vscode directory to have working breakpoints in your vscode editor. ```json { "version": "0.2.0", "configurations": [ { "name": "Clan Webui", "type": "python", "request": "launch", "module": "clan_cli.webui", "justMyCode": true, "args": ["--reload", "--no-open", "--log-level", "debug"] } ] } ```