Development

Build, lint and test are automatically run in GitHub Actions. They are required to pass for every PR and commit to master. For every commit to master, a new Docker image is also built and pushed to the GitHub Container Registry.

Contributions should be in the form of PRs opened against master, containing a comprehensive description of what was changed and why. Bonus points if you include a video or screenshot showcasing the functionality. Tests should also be included with contributions. If your PR is not addressing an existing issue, please first raise an issue on GitHub and discuss the implementation with the maintainers.

Development should follow GitHub Flow and commit messages should follow the Conventional Commits spec.

Useful commands

The following commands will likely be useful to you during development.

Install dependencies

npm ci or npm install - both will install the dependencies, but npm ci will make sure that they match package-lock.json exactly, and may take longer to run.

Compile everything

npm run build will compile the TypeScript files.

Linting

npm run lint will list all linting issues without fixing them automatically.

Formatting (lint w/ autofix)

npm run format will run linting and auto-fix all possible issues.

Running

npm start will start the app.

Alternatively, if you use VSCode for development, a Debug API debug config is included in the repository. Running this debugging config will automatically compile the required files and run src/main.ts in debug mode.

Testing

npm test will run tests with Jest and generate a testing + coverage report.