Crowsnest, a testing and demonstration application base developed by RISE Maritime. This platform is designed to serve as a launchpad for swift prototyping, offering an opportunity to experience future Human-Machine Interfaces (HMI) for use in marine operations, remote operation centers and more.
It is a React web-application aimed to use Open Bridge design guidelines as fare as reasonable e posable.
- Keelson (Zenoh)
- MQTT
- Devise sensors (GNSS & IMU)
- Clone the repository
git clone git@github.com:MO-RISE/crowsnest-frontend.git - Go in to the folder
cd crowsnest-frontend - The application needs first to install dependencies to run, you need Node.js and npm installed on your computer. To install dependencies run:
npm install - Start the frontend development server:
npm startit will open webpage tolocalhost:3000or go enter the URL manual into your browser.
- Start the crowsnest-gis and crowsnest-tiles services:
docker-compose -f docker-compose.dev.yml up -d
The Crow's Nest frontend is meant to be served by a docker container. The latest Docker container image can be pulled from MORISE's public docker registry.
To build the image yourself:
-
Clone the
crowsnest-frontendrepository.- with HTTPS:
git clone https://github.com/MO-RISE/crowsnest-frontend.git - with SSH:
git clone git@github.com:MO-RISE/crowsnest-frontend.git
- with HTTPS:
-
Cd into the main directory (i.e. where the
Dockerfilefile is) and run the following command:
docker build . -t crowsnest-frontend .Afterwards, the production container can be run with a command similar to this one:
docker run --rm -p 8888:80 crowsnest-frontendThe application will then be available at the URL http://localhost:9999. Note that the production container exposes its webserver on port 80, so the -p flag must be used to bind this port to the host. Furthermore, the -e flag can be used to pass the environmental variable MQTT_BROKER_URL. This variable points to the URL where the web application can reach an MQTT broker. If MQTT_BROKER_URL is not given, the default value of XXXX is used.
Install comandline tool on locally:
npm install -g protobufjs
npm install -g protobufjs-cliBundel all .proto
pbjs -t json file1.proto file2.proto > bundle.json
pbjs -t json .\awesome.proto .\CompressedVideo.proto .\envelope.proto .\primitives.proto .\CompressedImage.proto .\RawImage.proto > bundle.jsonExample of export options in figma

- Transform svg file to react component, this can be done with svg2jsx. Make sure component ID are incudes in the export as svg2jsx has default setting to remove ID.
- Manual edit svg:
- Each props should be defined in function declaration
- Text elements should have -->
fontFamily="Roboto" textAnchor="middle"
Plotting maps does not work in Firefox because it is not compatible with OffscreenCanvas.
If running development following setup allows for quick configurations to each station
REACT_APP_MQTT_USERNAME=""
REACT_APP_MQTT_PASSWORD=""
REACT_APP_MQTT_BROKER_ADDRESS="wss://crowsnest.mo.ri.se:443/mqtt"
REACT_APP_WEBRTC_USERNAME=""
REACT_APP_WEBRTC_PASSWORD=""
REACT_APP_MQTT_LOCAL_BROKER_ADDRESS="localhost"
REACT_APP_MQTT_LOCAL_USERNAME=""
REACT_APP_MQTT_LOCAL_PASSWORD=""
REACT_APP_ZENOH_LOCAL_ROUTER_URL_="http://localhost:8000"