This project is mono repo that contains both frontend client and backend server located in the respective directory.
The application has automated testing hosted through Github Actions ... see .github/workflows for workflow actions.
For Code Coverage Report view Sonar Dashboard
The project is staged at
Merging to the release branch with a version tag:
stores the image to the Capstone DockerHub publishes the application to the NASA HUB Web
To run the Maestro HUD application, both the frontend
and backend
applications must deployed/ran. There are a number of ways this can be done, including through docker or local server.
- node/npm installed on local machine
- git project cloned
- docker or docker-for-windows installed if running application via docker
Docker allows for the containerization of an application into its own fully functioning operating system. These containers can be deployed to any operating system with the docker service installed and running. To run the Maestro HUD application, do the following:
$ cd path-to-project\nasa.hud\frontend
$ docker build -t "nasa.hud.frontend" .
$ docker run -d -p 8080:8080 --name "nasa.hud.frontend" nasa.hud.frontend
$ cd path-to-project\nasa.hud\backend
$ docker build -t "nasa.hud.backend" .
$ docker run -d -p 3000:3000 --name "nasa.hud.backend" nasa.hud.backend
Both applications should now be running as docker containers. This can be confirmed with:
$ docker ps
This will show all running docker containers. The frontend can be accessed via http://localhost:8080 and the backend can be accessed via http://localhost:3000/hud/api.
Note: web browsers require HTTPS to allow the microphone to be accessed. As such, voice commands will not be operational without HTTPS in place.
To run the backend application locally, npm
is used to run a web server. This can be done by executing the following:
$ cd path-to-project\nasa.hud\backend\
$ npm install
$ npm run start
This will install the required dependencies and run the local server on port 3000. The backend will then be accessible at http://localhost:3000/hud/api.
As the frontend application is static JavaScript, HTML, and CSS, a local server must be installed and ran from the project directory to serve the files. This can be done using any preferred HTTP server. For a detailed guide on installing/deploying a local server and serving static files, see https://threejs.org/docs/#manual/en/introduction/How-to-run-things-locally.
This project can also be ran using many modern integrated development environments (IDEs). The preferred IDE for the Maestro HUD development team is Microsoft Visual Studio Code, which can be downloaded here. These IDEs often include plugins or extensions that allow static files to be ran locally via the web browser. The preferred VS Code extension for serving static files is Live Server. With Live Server installed, just right click the nasa.hud\frontend\index.html
file and select Open with Live Server. Doing so will launch the user's default web browser and serve the frontend application.
From within VS Code, press F1
to open the context menu and type Terminal: Create New Integrated Terminal
to open a command line in the IDE. In the command line, run the following commands to run the backend application:
$ cd path-to-project\nasa.hud\backend\
$ npm install
$ npm run start
This will install the necessary dependencies and start the backend service on port 3000. The backend will then be available at http://localhost:3000/hud/api.
Both the frontend and backend projects utilize the mocha testing framework in conjunction with testing tools like chai and sinon. To run these unit tests, first ensure that all dependencies have been installed to the local machine. To install project dependencies, run the following:
$ cd path-to-project\nasa.hud\frontend\
$ npm install
$ cd path-to-project\nasa.hud\backend\
$ npm install
Once the dependencies are installed, the unit tests can be executed by running the following commands:
$ cd path-to-project\nasa.hud\frontend\
$ npm run test
$ cd path-to-project\nasa.hud\backend\
$ npm run test
In addition to executing the unit tests, the coverage report will be generated and displayed in the console.
To get more help on the NASA HUD project visit the project documentation site at Capstone Docs.