# Contributing to karma

## Getting Started

To get started follow `Building from source` section of the [README](README.md)
file.

## Git tags and branches

Every release tag name will follow `vX.Y.Z` naming scheme, example: `v0.1.0`.
All releases are tagged against the `main` branch.

## Commit messages

[Conventional Commits](https://www.conventionalcommits.org) format is required
for all commits.

## Testing changes

To run included tests and linters run:

    make test

Some backend tests are using snapshot files. To update those snapshots after
a breaking change run tests using:

    UPDATE_SNAPSHOTS=1 go test -count=1 ./cmd/karma

## Vendoring dependencies

[Go modules](https://github.com/golang/go/wiki/Modules) are used for managing
dependecies. After adding new or removing exitsting depenencies please run

    go mod tidy

to update `go.mod` and `go.sum` files.

## Javascript & CSS assets

UI is written using [React](https://reactjs.org), follow user guide for
[create-react-app](https://github.com/facebook/create-react-app) to make
changes to the UI code.

Some UI tests are using [snapshots](https://jestjs.io/docs/en/snapshot-testing).
After making changes that affect how existing components are rendered please
run:

    cd ui && npm test -- -u

to update all snapshots. Remember to commit those changes when making a pull
request.

## Running

To build and start `karma` from local branch see `Running` section of the
[README](README.md) file.
